web-dev-qa-db-ja.com

HttpClient 4.3.x、非推奨のコードを修正して現在のHttpClient実装を使用する

私は次のコードを持っていましたが、それでもコンパイルされますが、それらはすべて非推奨です:

SSLSocketFactory sslSocketFactory = new SSLSocketFactory(context, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
ClientConnectionManager clientConnectionManager = base.getConnectionManager();
SchemeRegistry schemeRegistry = clientConnectionManager.getSchemeRegistry();
schemeRegistry.register(new Scheme("https", 443, sslSocketFactory));
return new DefaultHttpClient(clientConnectionManager, base.getParams());

私はそれをコードのこの部分に置き換えるために最善を尽くしました:

HttpClientBuilder builder = HttpClientBuilder.create();
SSLConnectionSocketFactory sslConnectionFactory = new SSLConnectionSocketFactory(context, SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
builder.setConnectionManager(new BasicHttpClientConnectionManager());
builder.setSSLSocketFactory(sslConnectionFactory);
return builder.build();

ご覧のとおり、新しい投稿に含める方法がわからないトップポストのコードは数行しかありません。代替SchemeRegistryなどの必要なコードを追加するにはどうすればよいですか?

13
Buhake Sindi
HttpClientBuilder builder = HttpClientBuilder.create();
SSLConnectionSocketFactory sslConnectionFactory = new SSLConnectionSocketFactory(context, SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
builder.setSSLSocketFactory(sslConnectionFactory);

Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create()
        .register("https", sslConnectionFactory)
        .build();

HttpClientConnectionManager ccm = new BasicHttpClientConnectionManager(registry);

builder.setConnectionManager(ccm);

return builder.build();
16
herau

まだコメントはできませんが、4.4から非推奨となったため、herauの回答を少しアップグレードしました。多分誰かが役に立つと思うでしょう。

SSLConnectionSocketFactory sslConnectionFactory = new SSLConnectionSocketFactory(context, NoopHostnameVerifier.INSTANCE);
18
pitbbul

マニュアルが言ったように、私はライブラリをNoopH​​ostnameVerifierに置き換え、それをそのように使用しました:

    private static CloseableHttpClient client =
        HttpClients.custom().setSSLHostnameVerifier(new NoopHostnameVerifier()).build();