web-dev-qa-db-ja.com

OkHttpがあるときにRetrofitを使用する理由

okHttpを使用してHTTPリクエストを作成し、サーバーから応答を取得できます

OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
  .url(url)
  .build();
Response response = client.newCall(request).execute();

次に、Gson libを使用して、応答を必要なオブジェクトに変換します。

これはSquare/OkHttp docからのものです。

その要求/応答APIは、流なビルダーと不変性を備えて設計されています。同期ブロッキング呼び出しとコールバック付きの非同期呼び出しの両方をサポートします

stackOverFlow から読み取ります

レトロフィットは、利用可能な場合、OkHTTPを自動的に使用します

それで、私の質問は何のためにレトロフィットなのでしょうか?

レトロフィットでできることOkHttpではできないこと!?

OkHttpとGsonはリクエストAPIの問題を解決すると思いますが、Retrofitはどのような問題を解決しますか?

79
Mehrdad Faraji

okHttpを使用してHTTP要求を作成し、サーバーから応答を取得することができます。Gsonlibを使用して応答を必要なオブジェクトに変換します

コードスニペットでは、2つの注目すべき手順をスキップしたことに注意してください。URLを生成し、Gsonを使用して実際にJSONを解析します。

それで、私の質問は何のためにレトロフィットなのでしょうか?

URLを生成し(特定のREST AP​​Iに関連付けられたタイプ認識生成コードを使用)、Gsonを使用して実際にJSONを解析します。つまり、コードスニペットでスキップしたことを実行します。

また、特定のタイプのREST操作(たとえば、POST)の場合、送信するものを組み立てるのに少し役立ちます(たとえば、エンコードされたフォームの生成)。

定義により、Retrofitを使用する必要はありません。レトロフィットは、コンピュータープログラマーによって書かれたコンピューターコードです。他の誰かが、Retrofitが行うことを行うコードを書くことができます。

retrofitがOkHttpを使用する理由

RetrofitはHTTP操作を実行する必要があります。 HTTPHttpおよびSPDYサポート、プラグイン可能なインターセプターなど、OkHttpが提供するすべてに対して、利用可能な場合はOkHttpを使用します。

71
CommonsWare

アプリケーション内でサーバーAPIをマップしようとする場合は、レトロフィットを使用する必要があります(タイプセーフィング)。 Retrofitは、okHTTPでラップされたAPIアダプターです。

安全に入力し、APIとの相互作用コードをモジュール化する場合は、レトロフィットを使用します。それ以外は、okHTTPとRetrofitの基本的なパフォーマンス、リクエストのデフォルトなどは同じです。

また、Jesse Wilson(主要なAndroid HTTPクライアントの開発者)から this ポッドキャストを聞くことをお勧めします。彼は、Apache HTTPクライアント、HTTPURLConnectionの開発の歴史について詳しく話しています。 、okHTTPおよびRetrofit。

27
geekoraul

Retrofit vs. OkHttp理由は簡単です:OkHttpは、低レベルのネットワーク操作、キャッシング、リクエストおよびレスポンス操作などを担当する純粋なHTTP/SPDYクライアントです。 。対照的に、RetrofitはOkHttpの上に構築された高レベルのREST抽象化です。 Retrofit 2はOkHttpと強力に結合されており、OkHttpを集中的に使用しています。

OkHttp関数:接続プーリング、gzipping、キャッシュ、ネットワークの問題からの回復、同期、非同期呼び出し、リダイレクト、再試行など。

レトロフィット関数: URL操作、リクエスト、ロード、キャッシュ、スレッド化、同期...同期および非同期呼び出しが可能です。

12

レトロフィットは、SquareのRESTおよびAndroidのJavaクライアントです。 RESTベースのWebサービスを介してJSON(またはその他の構造化データ)を比較的簡単に取得およびアップロードできます。 Retrofitでは、データのシリアル化に使用するコンバーターを構成します。通常、JSONではGSonを使用しますが、カスタムコンバーターを追加してXMLまたは他のプロトコルを処理できます。 Retrofitは、HTTP要求にOkHttpライブラリを使用します。その機能のために、簡単にokhttpを改造する必要があります。

5
Malti Devnani

Retrofitが解決する問題は次のとおりです。リモートサーバーからオブジェクトを取得するためのOKHttpのコードは膨大です。

0
Lyn