HttpClientとOkHttpの比較

1711 ワード

コード#コード#
  • OkHttp buildモードを使用してオブジェクトを作成するより簡潔な
  • 依存パッケージでは、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の性能比
  • client接続は単一例である:単一例モードでは、HttpClientの応答速度はミリ秒単位でより速く、性能差は
  • 以下である.
  • 非単例モードでは、OkHttpのパフォーマンスが向上し、HttpClientの接続作成に時間がかかります.多くの場合、これらのリソースは単例モードに書かれるためです.

  • まとめ
    OkHttpとHttpClientは性能と使用において伯仲せず、実際の業務に応じて選択すればよい.