【发布时间】:2016-10-10 13:16:18
【问题描述】:
我正在尝试使用 HttpURLConnection 在 Java 中发出获取请求。当我在我的家庭网络上时响应为 200,但在公司网络上我收到连接超时错误(SocketTimeoutException)我将超时更改为 20 秒,几秒钟后我仍然收到此错误。当我在从 Java 代码获取超时的同一网络上的浏览器中查看该链接时,该链接可用,所以它仍然是防火墙问题吗?或者是其他东西?这是我的代码:
String USER_AGENT = "Mozilla/5.0";
URL obj = new URL("http://jsonplaceholder.typicode.com/posts/1");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setConnectTimeout(20000);
con.setRequestMethod("GET");
con.setRequestProperty("User-Agent", USER_AGENT);
int responseCode = con.getResponseCode();
System.out.println("GET Response Code :: " + responseCode);
【问题讨论】:
-
贵公司提供代理吗?
-
我在代理方面没有太多经验。如果有必要,我相信他们会这样做,但如果我可以在同一网络上的 chrome 浏览器中看到响应,这仍然是一个问题吗?
-
当然可以。如果您指的是 Windows 上的 Chrome,例如 IE/Edge,它使用系统 (Windows) 代理设置,该设置可以通过 WPAD 和/或组策略自动设置,或者如果这是公司提供的计算机,只需对其进行配置即可。如果公司网络需要使用 HTTP 代理,正如许多人出于各种好坏(和丑陋!)的原因所做的那样,那么 Chrome 使用代理设置并且可以工作,但 Java 不使用它并且失败。如果您不在 Windows 上,请指定您所使用的。
标签: java http-get socket-timeout-exception