끝점에 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
오류를 얻고있다 .
에 따라 다음 코드로 작동있어 실험으로
대리? – MeBigFatGuy
@MeBigFatGuy 우리는 프록시를 사용하지만 이는 컴퓨터의 글로벌 설정입니다. 맞습니까? 같은 컴퓨터에서 브라우저를 사용하는 동안 Java IDE에서 작동하지 않는 이유를 모르겠습니다. – ddd