2

私たちのAndroidアプリはHTTP URL、サーバーからデータを取得することを参照しています。2 日前までは正常に動作していましたが、突然"sslpeerunverifiedexception: no peer certificate" exception、コードにもサーバーにも変更が加えられませんでした。コードは非常に単純です。

HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 12000);
HttpConnectionParams.setSoTimeout(httpParameters, 12000);
HttpClient client = new DefaultHttpClient(httpParameters);
HttpGet request = new HttpGet("http://site.com");
HttpResponse httpResponse = client.execute(request);
4

2 に答える 2

1

以下の関数をコードに追加します。

public HttpClient getNewHttpClient() throws SocketException, UnknownHostException {
    try {
        KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
        trustStore.load(null, null);

        SSLSocketFactory sf = new MySSLSocketFactory(trustStore);
        sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

        HttpParams params = new BasicHttpParams();
        HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
        HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);

        SchemeRegistry registry = new SchemeRegistry();
        registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
        registry.register(new Scheme("https", sf, 443));

        ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);
        return new DefaultHttpClient(ccm, params);
    } catch (Exception e) {
        return new DefaultHttpClient();
    }
}

上記の関数を呼び出すには、以下のコードを使用します。

HttpClient httpclient = getNewHttpClient();
于 2013-01-11T10:34:33.807 に答える
0

アクセスしているサーバーは、自己署名 SSL 証明書を使用しているようです。

推奨されていませんが (MiM 攻撃の可能性があります)、これは無視できます。詳細については、この投稿を参照してください: Android での自己署名 SSL 受け入れ

于 2013-01-11T10:16:56.693 に答える