について問題が発生していssl
ます。https
リンクに接続してそこから取得json
します。それはうまく機能しますが、接続して取得できない場合がありますjson
。その結果、アプリがクラッシュしました。接続を開いて https から json を取得する方法が必要だと思います。
LG Optimus G でテストしましたAndroid 4.1.2
。
これは私のエラーログです:
10-24 04:10:59.149: W/System.err(9985): javax.net.ssl.SSLException: Connection closed by peer
10-24 04:10:59.149: W/System.err(9985): at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method)
10-24 04:10:59.169: W/System.err(9985): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:395)
10-24 04:10:59.169: W/System.err(9985): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLInputStream.<init>(OpenSSLSocketImpl.java:647)
10-24 04:10:59.189: W/System.err(9985): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.getInputStream(OpenSSLSocketImpl.java:618)
10-24 04:10:59.209: I/MiuiMagnifierController(9985): MagnifierController is created
10-24 04:10:59.219: W/System.err(9985): at org.apache.http.impl.io.SocketInputBuffer.<init>(SocketInputBuffer.java:70)
10-24 04:10:59.229: W/System.err(9985): at org.apache.http.impl.SocketHttpClientConnection.createSessionInputBuffer(SocketHttpClientConnection.java:83)
10-24 04:10:59.229: W/System.err(9985): at org.apache.http.impl.conn.DefaultClientConnection.createSessionInputBuffer(DefaultClientConnection.java:170)
10-24 04:10:59.229: W/System.err(9985): at org.apache.http.impl.SocketHttpClientConnection.bind(SocketHttpClientConnection.java:106)
10-24 04:10:59.229: W/System.err(9985): at org.apache.http.impl.conn.DefaultClientConnection.openCompleted(DefaultClientConnection.java:129)
10-24 04:10:59.229: W/System.err(9985): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:172)
10-24 04:10:59.239: W/System.err(9985): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
これは私が使用した私の機能です:
public static String readJsonFromUrl(String url) throws Exception {
String result = "";
HttpPost httpPost = null;
DefaultHttpClient httpClient = null;
httpClient = httpClient();
httpPost = new HttpPost(url);
HttpResponse httpResponseGet = httpClient.execute(httpPost);
HttpEntity resEntityGet = httpResponseGet.getEntity();
result = EntityUtils.toString(resEntityGet);
if (result.contains("\n")) {
result = result.replace("\n", "");
}
return result;
}
=> 次の行でクラッシュします:HttpResponse httpResponseGet = httpClient.execute(httpPost);
この問題を解決できる解決策を教えてください。