HttpClientとOkHttpの比較
1711 ワード
コード#コード# OkHttp buildモードを使用してオブジェクトを作成するより簡潔な 依存パッケージでは、HttpClientが非同期要求を送信、ファイルアップロードを実装する必要がある場合、非同期要求依存 を追加的に導入する必要がある.
タイムアウトの設定
HttpClientタイムアウト設定:
HttpClient 4.3+バージョン以上、タイムアウト設定はRequestConfigで設定
タイムアウト時間は、HttpClientではなく要求タイプHttpGetに設定されます.
OkHttpタイムアウト設定:
直接OkHttpで設定
小結:clientが単一モードの場合、HttpClientはタイムアウトを設定する上でより柔軟であり、異なる要求タイプに対して異なるタイムアウト時間を設定し、OkHttpがタイムアウト時間を設定すると、すべての要求タイプのタイムアウト時間も決定する.
HttpClientとOkHttpの性能比 client接続は単一例である:単一例モードでは、HttpClientの応答速度はミリ秒単位でより速く、性能差は 以下である.非単例モードでは、OkHttpのパフォーマンスが向上し、HttpClientの接続作成に時間がかかります.多くの場合、これらのリソースは単例モードに書かれるためです.
まとめ
OkHttpとHttpClientは性能と使用において伯仲せず、実際の業務に応じて選択すればよい.
org.apache.httpcomponents
httpmime
4.5.3
org.apache.httpcomponents
httpasyncclient
4.5.3
タイムアウトの設定
HttpClientタイムアウト設定:
HttpClient 4.3+バージョン以上、タイムアウト設定はRequestConfigで設定
private CloseableHttpClient httpClient = HttpClientBuilder.create().build();
private RequestConfig requestConfig = RequestConfig.custom()
.setSocketTimeout(60 * 1000)
.setConnectTimeout(60 * 1000).build();
String api = "/user/v1/getUserInfo";
String url = String.format("%s%s", "localhost:18080", api);
HttpGet httpGet = new HttpGet(url);
httpGet.setConfig(requestConfig); //
タイムアウト時間は、HttpClientではなく要求タイプHttpGetに設定されます.
OkHttpタイムアウト設定:
直接OkHttpで設定
private OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(60, TimeUnit.SECONDS)//
.readTimeout(60, TimeUnit.SECONDS)//
.build();
小結:clientが単一モードの場合、HttpClientはタイムアウトを設定する上でより柔軟であり、異なる要求タイプに対して異なるタイムアウト時間を設定し、OkHttpがタイムアウト時間を設定すると、すべての要求タイプのタイムアウト時間も決定する.
HttpClientとOkHttpの性能比
まとめ
OkHttpとHttpClientは性能と使用において伯仲せず、実際の業務に応じて選択すればよい.