2017-02-21 3 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でもEven 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) 

EDIT コンセンサスは、これがファイアウォールの問題であるということであるように見えます。

私はだから私は、接続する前に、次のコードを追加して自分のコンピュータのために、以下の https://user:[email protected]:80

に環境変数http_proxyhttps_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

最後に、それはあなたがウェブを指定する必要が多分あなたは、企業環境で実行されている2件の他の記事、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

関連する問題