Java使用URLConnectionReader请求网页出现UnknownHostException异常
异常原因
java.net.UnknownHostException 表示JVM无法将你请求的域名www.tradegate.de解析为对应的IP地址,你当前遇到的问题核心原因是jdoodle在线Java编译器的服务器做了出站网络请求限制:绝大多数在线代码运行平台为了避免被滥用做爬虫、恶意请求攻击,都会限制甚至完全禁止用户代码访问外部网络域名,你的代码本身逻辑没有错误。
验证方法
你可以把代码中请求的地址替换为任意你确认可以正常访问的公开HTTP接口重新运行,如果依然抛出同类异常,即可确认是平台网络限制导致,和你的代码无关。
解决方案
- 直接在本地运行代码:在本地设备安装JDK后运行你的代码,只要本地网络可以正常访问
www.tradegate.de,就能正常拉取到页面内容 - 若必须使用在线运行平台,可以更换支持出站网络请求的Java在线编译器,或者咨询jdoodle官方能否将你需要的域名加入白名单
- 代码优化建议:可以给
URLConnection增加超时配置,避免异常场景下请求长时间卡死,参考配置如下:
// 调用openConnection之后、getInputStream之前添加以下两行 urlConnection.setConnectTimeout(5000); // 连接超时设为5秒 urlConnection.setReadTimeout(10000); // 数据读取超时设为10秒
内容的提问来源于stack exchange,提问作者cheese steak jimmy's
相关产品推荐
相关产品推荐

