2016-10-10 1 views
1

HttpURLConnection을 사용하여 Java에서 요청을 얻으려고합니다. 내가 home network에있을 때 응답은 200이지만 회사 nework에서 연결 시간 초과 오류 (SocketTimeoutException)가 발생했습니다. 제한 시간을 20 초로 변경했으며 몇 초 후에도이 오류가 발생합니다. 링크는 자바 코드에서 타임 아웃을 얻고있는 동일한 네트워크의 브라우저에서 볼 때 사용할 수 있으므로 방화벽 문제 일 수 있습니까? 또는 다른 것? 여기 내 코드 :Http에 대한 서버 시간 초과가 특정 네트워크에서 발생했습니다.

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); 
+0

회사에서 프록시를 제공합니까? – 0x44656e6e795279616e

+0

저는 프록시에 대한 많은 경험이 없습니다. 필요한 경우 확신 할 수 있지만 동일한 네트워크의 Chrome 브라우저에서 응답을 볼 수 있다면 여전히 문제가 될 수 있습니까? –

+2

확실히 그럴 수 있습니다. IE/Edge와 같은 Windows상의 Chrome을 의미하는 경우 WPAD 및/또는 그룹 정책에 의해 자동으로 설정할 수있는 시스템 (Windows) 프록시 설정을 사용하거나이 구성을 통해 회사에서 제공하는 컴퓨터 인 경우에만 사용합니다. 회사 네트워크에서 HTTP 용 프록시를 사용해야하는 경우 Chrome은 다양하게 좋거나 나쁨 (그리고 못생긴!) 이유로 그 중 많은 수가 프록시 설정을 사용하지만 작동하지만 Java는이를 사용하지 않고 실패합니다. Windows를 사용하지 않는 경우 현재 사용중인 컴퓨터를 지정하십시오. –

답변

0

이것은 일반적으로 회사 네트워크의 방화벽에 의해 생성되는 오류입니다. 그러나 브라우저가 인터넷에 연결할 수 있다면 브라우저가 일부 프록시 (시스템 프록시)를 사용하고있는 것입니다. 시스템 프록시 매개 변수 (호스트, 포트, 사용자 및 암호) 및 통과되는 알아 대안

java -Djava.net.useSystemProxies=true ... 

또는 : 그래서, 당신은 시스템 프록시를 사용하도록 표준 Java network properties 통해 JVM 변수화해야 JVM으로 연결 :

java -Dhttp.proxyHost=... -Dhttp.proxyPort=... 
관련 문제