2017-05-03 45 views
0

HttpUrlConnection을 사용하여 원격 클라이언트에서 서비스를 호출하는 기능이 있습니다. 이 함수는 HttpsUrlConnection만을 사용하여 호출 할 수있는 새로운 보안 원격 클라이언트를 추가 할 때까지 제대로 작동합니다.HttpsURLConnection에 액세스 한 후 HttpURLConnection에 연결할 때 SocketException이 발생합니다.

새 클라이언트를 호출 한 후 새 https 원격 클라이언트를 호출하면 InputStream 객체를 가져올 때 이전 클라이언트가 java.net.SocketException: Connection reset을 반환합니다. 이 같은

내 코드를 보면 뭔가 :

conn = (HttpURLConnection) url.openConnection(); 
conn.setRequestProperty("Content-Type", "application/json"); 
conn.setDoOutput(true); 
conn.setRequestMethod("POST"); 
out = conn.getOutputStream(); 
writer = new OutputStreamWriter(out); 
writer.write(strJson); 
writer.close(); 
in = conn.getInputStream(); // connection reset error here. 
reader = new InputStreamReader(in); 
rd = new BufferedReader(reader); 
while ((line = rd.readLine()) != null) { 
    result += line; 
} 
rd.close(); 
in.close(); 
reader.close(); 
out.close(); 
conn.disconnect(); 

누구나 무슨 일이 있었는지 단서가? 미리 감사드립니다.

스택 추적과 같이이다 : 나는 여전히 오류가 발생하는 원인을 모르는

java.net.SocketException: Connection reset 
    at java.net.SocketInputStream.read(SocketInputStream.java:196) 
    at java.net.SocketInputStream.read(SocketInputStream.java:122) 
    at sun.security.ssl.InputRecord.readFully(InputRecord.java:442) 
    at sun.security.ssl.InputRecord.read(InputRecord.java:480) 
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:934) 
    at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:891) 
    at sun.security.ssl.AppInputStream.read(AppInputStream.java:102) 
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:235) 
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:275) 
    at java.io.BufferedInputStream.read(BufferedInputStream.java:334) 
    at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:690) 
    at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:633) 
    at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:661) 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1324) 
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254) 
+0

스택 추적하십시오. – EJP

+0

일반적으로 Https URL을 연결하려면 응용 프로그램에 보안 인증서를 추가해야합니다. –

+0

"in = conn.getInputStream()"줄 앞에서 conn.setDoInput (true)을 추가하여 응용 프로그램이 연결에서 입력을 읽으려고한다는 것을 나타낼 수 있습니까? – OTM

답변

0

. 내 솔루션은 java.net.HttpURLConnection을 사용하지 않고 대신 org.apache.http.impl.client.DefaultHttpClient를 사용합니다.