2016-12-22 23 views
0

我有一个简单的代码,并有一个异常来了,不知道为什么? 我的代码:SSLHandshakeException:由同级关闭的连接

Document document= Jsoup.connect("https://kolkatatrafficpolice.net/").get(); 

堆栈跟踪:

javax.net.ssl.SSLHandshakeException: Connection closed by peer 
W/System.err:  at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method) 
W/System.err:  at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:357) 
W/System.err:  at com.android.okhttp.Connection.connectTls(Connection.java:235) 
W/System.err:  at com.android.okhttp.Connection.connectSocket(Connection.java:199) 
W/System.err:  at com.android.okhttp.Connection.connect(Connection.java:172) 
W/System.err:  at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:367) 
W/System.err:  at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:130) 
W/System.err:  at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330) 
W/System.err:  at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:247) 
W/System.err:  at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:457) 
W/System.err:  at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:126) 
W/System.err:  at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.connect(DelegatingHttpsURLConnection.java:89) 
W/System.err:  at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java) 
W/System.err:  at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:571) 
W/System.err:  at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:548) 
W/System.err:  at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:235) 
W/System.err:  at org.jsoup.helper.HttpConnection.get(HttpConnection.java:224) 
W/System.err:  at com.pritesh.trafficviolation.GetHtml.doInBackground(MainActivity.java:29) 

回答

0

该服务器使用了无法识别的证书颁发机构。

如果这是您的服务器,并且您故意这样做(例如,这是一个自签名证书),则需要配置JSoup/OkHttp以使用该自签名证书。

否则,你的问题在于服务器。

+0

它不是我的服务器,我只有一行代码没有别的。我该如何解决这个问题。 – Pritesh

+0

@Pritesh:切换到不同的服务器,使用一个可识别的根证书颁发机构。或者,看看你是否可以找到一些工具来让你找出他们正在使用的根证书颁发机构,然后使用[网络安全配置](https://developer.android.com/training/articles/security-config .html),我的[backport](https://github.com/commonsguy/cwac-netsecurity)或你自己定制的'TrustManager',试图教JSoup/OkHttp来兑现这个根证书。 – CommonsWare