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


106

OkHttpを使用すると、HTTP要求を作成してサーバーから応答を取得できます

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

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

これはSquare / OkHttpドキュメントからです:

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

私はstackOverFlowから読みました

Retrofitは、利用可能な場合、OkHTTPを自動的に使用します

だから私の質問は正確に何のためにレトロフィットですか?

RetrofitがOkHttpでできないことは何ですか?

OkHttpとGsonはリクエストAPIの問題を解決すると思いますが、Retrofitが解決する問題は何ですか?


2
意見に基づいており、そのように閉鎖される可能性が高い。問題の事実は、両方が存在し、誰も死んでいないということです。つまり、どちらもAndroidデベロッパーコミュニティの目には有効なユースケースがあります。
2016

1
この投稿を確認してくださいstackoverflow.com/q/16902716/1144203
ivan.sim '27

@isim以前にこのリンクを見ましたが、なぜレトロフィットが必要なのか理解できません。なぜRetrofitはOkHttpを使用するのですか?
Mehrdad Faraji 2016

@MehrdadFaraji OkHttpが望みどおりの処理を実行できる場合は、レトロフィットは必要ありません。RetrofitがOkHttpを使用する理由 OkHttp Callパターン、OkHttpインターセプター、証明書のピン留めなどを有効にするためのいくつかのこと
ivan.sim '27

rxjavaでレトロフィットを使用することは、一般的な業界慣行になっています。これがレトロフィットを使用するもう1つの理由です
paul_hundal

回答:


95

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

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

だから私の質問は正確に何のためにレトロフィットですか?

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

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

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

RetrofitがOkHttpを使用する理由

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


32

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

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

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


23

レトロフィットとOkHttp 理由は単純です。OkHttpは、低レベルのネットワーク操作、キャッシング、要求と応答の操作などを行う純粋なHTTP / SPDYクライアントです。対照的に、RetrofitはOkHttpの上に構築された高レベルのREST抽象化ビルドです。Retrofit 2はOkHttpと強く結びついており、集中的に使用します。

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

レトロフィット機能: URL操作、要求、ロード、キャッシング、スレッド化、同期...同期および非同期の呼び出しが可能です。


7

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.