序文
改造パッケージokhttp要求ベースのフレームワークネットワークは、OkHttpは、ネットワーク要求の性質に作業を完了することで、あなたが最初にそれが改造を使用することを学ぶことです理解していることを示唆OKhttpわからない場合は、レトロフィットパッケージインタフェースは、ポータル:.ネットワーク要求に対してのみ責任があるのAndroid開発フレームワークは、詳細なシリーズを使用していますOkHttp
利点は、使用が簡単でデカップリング、スケーラビリティで改造、RxJavaをサポートするだけでなく、JSONの解析フレームワーク(例えばGson)の様々な使用することができます。しかし、これはRxJavaを利用してブログのセクションを説明し、RxJavaを使用していません私は別のブログ記事で説明します。
追加で改造すでにすでに最大限に使用方法の様々なマッチング、非常によくパッケージされたので、私は、不要な再お勧めしませんパッケージの改造(ほとんどのパッケージ化改造シングルトンを)。ここでもパッケージはさせませハンサムに見えませんあなたは非常にNiubiです。唯一あなたが愚かに見えるようになります。拡張は非常に非常に総破壊を達成するためのデカップリングされています。
Githubの住所
https://github.com/square/retrofit
頼ります
あなたはRxJavaモードを使用しない場合は、次の2つだけに依存する必要があります。
実装' com.squareup.retrofit2:改造:2.6.2 ' 実装' com.squareup.retrofit2:コンバータ-gson:2.4.0 '
gsonが(個人的な好みGson)使用JSONデータを解析するために使用される、レトロフィットは、他の分析ツールなどfastJsonをサポートしています
簡単なデモ
デモを説明するための思考によって、古いルール
1.基本的な構成要求レトロフィットを作成します。
改造一度設定され、あなたがグローバルに使用することができます(あなたは、単一のグローバルな実施形態を使用し達成することができます)ネットワークに要求するレトロフィットを、もちろんの、次のコードのデモ:
プライベートレトロフィットmRetrofit、 プライベート 無効initHttpBase(){ mRetrofit = 新新Retrofit.Builder() .baseUrl( "http://doclever.cn:8090/mock/5c3c6da33dce46264b24452b/")// ベースのネットワークアドレス .addConverterFactory(GsonConverterFactory.create ())// 解析Gsonを使用 ;)(.buildを }
データが返された後、2 Beanクラスを作成します。
パブリック クラスLoginBean { プライベート int型のコード。 プライベート文字列メッセージ。 公共 INT にgetCode(){ 戻りコードと } 公共 ボイド SETCODE(int型コード){ この .CODE = コード。 } パブリック文字列のgetMessage(){ リターン・メッセージ、 } 公共 ボイドsetMessage(文字列メッセージ){ この .message = メッセージ。 } }
2.ネットワーク要求インターフェースを作成します。
パブリック インターフェイスはHttpList { @FormUrlEncoded // 注釈を追加することはできませんフォーム利用できもちろんそこから形成@Multipart示し @POST(「テスト/ login_testを」)// ネットワーク要求パス コール<LoginBean>ログイン(@Field( " 番号")数文字列、@Field("パスワード" )は、文字列のパスワード); }
これは、インタフェースクラスであることに注意してください。LoginBean Beanクラスは、(データの後に返される改造自動的に分析Gsonを使用してインポート)
3.リクエストネットワーク
プライベート ボイドpostHttp(){ HttpList httpList = mRetrofit.create(HttpList。クラス)。 コール <LoginBean>呼び出し= httpList.login( "181234123"、 "123456" ); call.enqueue(新しいコールバック<LoginBean> (){ @Override 公共 のボイド onResponse(コール<LoginBean>呼び出し、レスポンス<LoginBean> 応答){ LoginBean豆 = response.body(); Log.e(TAG、「onResponse:コード= "+ bean.getCode()); Log.e(TAG、 "onResponse:メッセージ=" + ビーン。 @Override 公共 ボイド ONFAILURE(コール<LoginBean> コール、のThrowable T){ Log.e(TAG、 "ONFAILURE:ネットワーク要求が失敗=" + t.getMessage()); } }); }
このように、我々は、ネットワーク要求は特に単純ではない完成しました
ネットワーク要求を停止する方法
ヘッダーヘッドを追加する方法
ヘッダ情報は、固定データの形で添加されます
パブリック インターフェースHttpList { @Headers({ "content1:つ"、 "content2:二つの" }) @POST( "試験/ logout_test" ) コール <LoginBean> logout1(); }
ヘッダ情報は、非固定データの形で添加されます
パブリック インターフェースHttpList { @POST( "試験/ logout_test" ) コール <LoginBean> logout2(@Header( "コンテンツ" )は、文字列のコンテンツ)。 }