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はどのような問題を解決しますか?
okHttpを使用してHTTP要求を作成し、サーバーから応答を取得することができます。Gsonlibを使用して応答を必要なオブジェクトに変換します
コードスニペットでは、2つの注目すべき手順をスキップしたことに注意してください。URLを生成し、Gsonを使用して実際にJSONを解析します。
それで、私の質問は何のためにレトロフィットなのでしょうか?
URLを生成し(特定のREST APIに関連付けられたタイプ認識生成コードを使用)、Gsonを使用して実際にJSONを解析します。つまり、コードスニペットでスキップしたことを実行します。
また、特定のタイプのREST操作(たとえば、POST)の場合、送信するものを組み立てるのに少し役立ちます(たとえば、エンコードされたフォームの生成)。
定義により、Retrofitを使用する必要はありません。レトロフィットは、コンピュータープログラマーによって書かれたコンピューターコードです。他の誰かが、Retrofitが行うことを行うコードを書くことができます。
retrofitがOkHttpを使用する理由
RetrofitはHTTP操作を実行する必要があります。 HTTPHttpおよびSPDYサポート、プラグイン可能なインターセプターなど、OkHttpが提供するすべてに対して、利用可能な場合はOkHttpを使用します。
アプリケーション内でサーバーAPIをマップしようとする場合は、レトロフィットを使用する必要があります(タイプセーフィング)。 Retrofitは、okHTTPでラップされたAPIアダプターです。
安全に入力し、APIとの相互作用コードをモジュール化する場合は、レトロフィットを使用します。それ以外は、okHTTPとRetrofitの基本的なパフォーマンス、リクエストのデフォルトなどは同じです。
また、Jesse Wilson(主要なAndroid HTTPクライアントの開発者)から this ポッドキャストを聞くことをお勧めします。彼は、Apache HTTPクライアント、HTTPURLConnectionの開発の歴史について詳しく話しています。 、okHTTPおよびRetrofit。
Retrofit vs. OkHttp理由は簡単です:OkHttpは、低レベルのネットワーク操作、キャッシング、リクエストおよびレスポンス操作などを担当する純粋なHTTP/SPDYクライアントです。 。対照的に、RetrofitはOkHttpの上に構築された高レベルのREST抽象化です。 Retrofit 2はOkHttpと強力に結合されており、OkHttpを集中的に使用しています。
OkHttp関数:接続プーリング、gzipping、キャッシュ、ネットワークの問題からの回復、同期、非同期呼び出し、リダイレクト、再試行など。
レトロフィット関数: URL操作、リクエスト、ロード、キャッシュ、スレッド化、同期...同期および非同期呼び出しが可能です。
レトロフィットは、SquareのRESTおよびAndroidのJavaクライアントです。 RESTベースのWebサービスを介してJSON(またはその他の構造化データ)を比較的簡単に取得およびアップロードできます。 Retrofitでは、データのシリアル化に使用するコンバーターを構成します。通常、JSONではGSonを使用しますが、カスタムコンバーターを追加してXMLまたは他のプロトコルを処理できます。 Retrofitは、HTTP要求にOkHttpライブラリを使用します。その機能のために、簡単にokhttpを改造する必要があります。
Retrofitが解決する問題は次のとおりです。リモートサーバーからオブジェクトを取得するためのOKHttpのコードは膨大です。