2017-02-21 9 views
0

끝점에 GET 요청을 보내고 응답 텍스트를 json으로 구문 분석하는 방법을 쓰고 있습니다.Google에서 입력 스트림을받는 동안 연결이 거부되었습니다.

public static KafkaConnection getKafkaConnection(String sUrl) throws IOException { 
    URL url=new URL(sUrl); 
    HttpURLConnection con=(HttpURLConnection)url.openConnection(); 
    con.setRequestMethod("GET"); 
    InputStream is = con.getInputStream(); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
    StringBuilder builder = new StringBuilder(); 
    for (String line = null; (line = reader.readLine()) != null;) { 
     builder.append(line).append("\n"); 
    } 
    String jsonText = builder.toString(); 
    JSONObject json = new JSONObject(jsonText); 
    KafkaConnection kc = new KafkaConnection(); 
    JSONArray array = json.getJSONArray("address"); 
    List<String> list = new ArrayList<String>(); 
    for (int i = 0; i < array.length(); i++) { 
     list.add(array.getString(i)); 
    } 
    kc.setAddresses(list); 
    kc.setZookeeper(json.getString("zookeeper")); 
    return kc; 
} 

그러나 InputStream is = con.getInputStream();에서 "Connection refused"오류가 발생합니다. 모든 URL에 대해. 심지어 http://www.google.com. 이 URL은 브라우저에서 액세스하거나 동일한 컴퓨터에서 curl 명령을 사용하여 액세스 할 수 있습니다. HttpUrlConnection을 사용하여 연결 실패의 원인은 무엇입니까? , 답변을 바탕으로

Exception in thread "main" java.net.ConnectException: Connection refused: connect 
    at java.net.DualStackPlainSocketImpl.connect0(Native Method) 
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79) 
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 
    at java.net.Socket.connect(Socket.java:589) 
    at java.net.Socket.connect(Socket.java:538) 
    at sun.net.NetworkClient.doConnect(NetworkClient.java:180) 
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:432) 
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:527) 
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:211) 
    at sun.net.www.http.HttpClient.New(HttpClient.java:308) 
    at sun.net.www.http.HttpClient.New(HttpClient.java:326) 
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1202) 
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1138) 
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1032) 
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:966) 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1546) 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1474) 
    at com.lgc.dist.plat.test.kafka.KafkaTestUtils.getKafkaConnection(KafkaTestUtils.java:30) 
    at com.lgc.dist.plat.test.kafka.KafkaTestUtils.main(KafkaTestUtils.java:54) 

편집 합의가이 방화벽 문제가 있다는 것입니다 같습니다

다음은 스택 추적입니다.

내가 환경 변수 http_proxy과 컴퓨터 https://user:[email protected]:80

에 대해 다음과 https_proxy을 설정 않았다

그래서 내가 연결하기 전에 다음 코드를 추가 : 그러나

System.setProperty("http.proxyHost", "https://np1prxy801.corp.company.com"); 
    System.setProperty("http.proxyPort", "80"); 
    String user = "user"; 
    String password = "pass"; 
    Authenticator.setDefault(
     new Authenticator() { 
      @Override 
      public PasswordAuthentication getPasswordAuthentication() { 
      return new PasswordAuthentication(
        user, password.toCharArray()); 
      } 
     } 
    ); 

을, 나는 아직도 connection refused 오류를 얻고있다 .

+1

에 따라 다음 코드로 작동있어 실험으로

대리? – MeBigFatGuy

+0

@MeBigFatGuy 우리는 프록시를 사용하지만 이는 컴퓨터의 글로벌 설정입니다. 맞습니까? 같은 컴퓨터에서 브라우저를 사용하는 동안 Java IDE에서 작동하지 않는 이유를 모르겠습니다. – ddd

답변

0

마지막으로 당신이 웹을 지정해야 어쩌면 당신은 기업 환경에서 실행하는 두 개의 다른 게시물 Eclipse Outbound connection blocked : The same url works from web browser How do I make HttpURLConnection use a proxy?

Proxy proxy = new Proxy(Proxy.Type.HTTP, 
      new InetSocketAddress("np1prxy801.corp.abc.com", 80)); 
    URL url=new URL(sUrl); 
    HttpURLConnection con = (HttpURLConnection)url.openConnection(proxy); 

    String user = "user"; 
    String password = "password"; 
    Authenticator.setDefault(
     new Authenticator() { 
      @Override 
      public PasswordAuthentication getPasswordAuthentication() { 
      return new PasswordAuthentication(
        user, password.toCharArray()); 
      } 
     } 
    ); 

    con.setRequestMethod("GET"); 
    InputStream is = con.getInputStream(); 
1

연결을 시도하기 전에 ("http.proxyHost를", "your.proxy.server.com")

System.setProperty를 시도; System.setProperty ("http.proxyPort", "{프록시 포트}");

+0

코드에서이 값을 설정했지만 여전히 같은 오류가 발생합니다. 게시물에서 내 수정 사항을 확인하십시오. – ddd