web-dev-qa-db-ja.com

okhttpとhttpurlconnectionの違いは?

これら2つのライブラリの違いは何ですか?

Volleyがhttpurlconnectionを使用し、okhttpをレトロフィットするため、これら2つのlibに違いがあることを理解した方法も...

しかし、私はそれらと両方のソリューションの長所と短所の違いを理解していません。 okhttpとhttpurlconnectionのどちらが良いですか?

いつ知りたいですか?.

編集:

Android httpurlconnectionにokhttpを使用するのはなぜですか?私が間違っていない場合、httpurlconnectionがokhttpを使用していなかった前に

12
user155293

okHttpの長所 OkHttpは、リクエストごとに簡単にカスタマイズできます—各リクエストのタイムアウトのカスタマイズなど。 OkHttpネットワークが問題を起こしても耐えます:一般的な接続の問題から静かに回復します。サービスに複数のIPアドレスがある場合、最初の接続が失敗すると、OkHttpは代替アドレスを試みます。

完全な分析任意のリクエストを取得できます。送信バイト数、受信バイト数、および要求に要した時間を知ることができます。これらの分析は重要であり、アプリケーションのデータ使用量と各リクエストに要した時間を確認できるため、遅いリクエストを特定できます。

OkHttpの使い方は簡単です。その要求/応答APIは、流暢なビルダーと不変性で設計されています。同期ブロッキング呼び出しとコールバックによる非同期呼び出しの両方をサポートしています。

OkHttpはAndroid 2.3以上をサポートしています。Javaの場合、最小要件は1.7です。

9

APIは異なりますが、個人的にはOkHttpのものを好みます。

Android 4.4以降、ネットワークレイヤー(およびHttpUrlConnection API)もOkHttpを介して実装されていることに注意してください。

2
Marco Righini

HttpURLConnection

利点:

  • 軽量APIは、管理を容易にし、互換性の問題を軽減します。
  • HttpResponseCacheを利用した、キャッシュメカニズムの自動処理。
  • ネットワークの使用量を削減し、バッテリーの消費も抑えます。

クエリパラメータ:

    URI baseUri = new URI("www.exemple.com/search");
URI uri = applyParameters(baseUri, "Word","Java");
HttpURLConnection connection = 
    (HttpURLConnection) uri.toURL().openConnection();
connection.setDoInput(true);
connection.setDoOutput(false);
connection.setRequestMethod("GET");
connection.connect();
if (connection.getResponseCode() == 
   HttpURLConnection.HTTP_OK) {
   // ...
}

Androidヘッダーの例:

conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("CustomHeader", token);

OkHttp

利点:

  • 接続プーリング
  • Gziping
  • キャッシング
  • ネットワークの問題からの回復
  • リダイレクト
  • 再試行
  • 同期呼び出しと非同期呼び出しのサポート

クエリパラメータ:

HttpUrl.Builder urlBuilder = HttpUrl.parse("https://httpbin.org/get).newBuilder();
urlBuilder.addQueryParameter("website", "www.journaldev.com");
urlBuilder.addQueryParameter("tutorials", "Android");
String url = urlBuilder.build().toString();

Request request = new Request.Builder()
                     .url(url)
                     .build();

Androidヘッダーの例:

Request request = new Request.Builder()
    .header("Authorization", "replace this text with your token")
    .url("your api url")
    .build();
0
HeinerTheBest