ネットワーク要求フレームワークのRetrofit 2.0基本的な説明

6936 ワード

Retrofit2.0概要
Retrofitは、RESTfulアーキテクチャのAndroid(Java)クライアント実装であり、注釈に基づいて、JSON to POJO(Plain Ordinary Java Object、簡易Javaオブジェクト)、POJO to JSON、ネットワークリクエスト(POST、GET、PUT、DELETEなど)パッケージを提供する.公式の自己紹介では、
A type-safe REST client for Android and Java
現在2.0のバージョンに更新されていますが、1.0のバージョンとの使用には大きな違いがあります.私も初めて使います.ここでは主に2.0のバージョンの簡単な使用を検討しています.公式の例も参照できます.
準備作業
権限の追加
ネットワークリクエスト権限の最初の追加
<uses-permission android:name="android.permission.INTERNET"/>

依存の追加
  Retrofit2.0バージョン以降はokhttpリクエストのみがサポートされ、カプセル化されており、okhttpの依存を追加する必要はありません.
dependencies {
    compile 'com.squareup.retrofit2:retrofit:2.0.2'
    compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta3'
}

単純な使用
次に、Retrofitの初期化とデータの要求方法を見てみましょう.
Retrofitオブジェクトの初期化
public static final String BASE_URL = "https://api.github.com/";
Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(BASE_URL)
        .addConverterFactory(GsonConverterFactory.create())
        .build();

  BASE_URLはあなたが要請したServerアドレスです.
.addConverterFactory(GsonConverterFactory.create())

  Retrofit2.0 JSONデータを返すデフォルトの解析方式は提供されず、手動で指定する必要があり、Jacksonなど多くの解析方式をサポートする.必要に応じて依存を追加します.ここではRetrofitが提供するconverter-gson依存を追加します.ちょっと不快なのはFastJson解析をサポートしていないことで、必要があれば自分でFastjsonConverterFactoryを書いてConverterを継承することができます.Factory実装.だが0以降はokhttpリクエストのみサポートされますが、okhttpをカスタマイズしてRetrofitに再構成することもできます.
OkHttpClient client = new OkHttpClient();
client.interceptors().add(new Interceptor() {
    @Override
    public Response intercept(Chain chain) throws IOException {
            Response response = chain.proceed(chain.request());
            // Do anything with response here
            return response;
        }
Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(BASE_URL)
        .client(client)
        .addConverterFactory(GsonConverterFactory.create())
        .build();
});

要求インタフェースの定義
HTTP APIをJavaインタフェースに変換することを実現し、Retrofitは5種類の内蔵注釈を提供した:GET、POST、PUT、DELETEとHEAD、注釈の中で指定した資源の相対的なURL.
public interface NetWorkService {
    @GET("users/basil2style")
    Call getData();
}

置換ブロックとパラメータを使用して動的に更新します.置換ブロックは{and}で囲まれたアルファベット数からなる文字列で、対応するパラメータは同じ文字列を使用して@Pathに注釈される必要があります.
@GET("repos/{params1}/{params2}/contributors")
Call> getData(
        @Path("params1") String params1,
        @Path("params2") String params2,
);

getData()というメソッドを呼び出すと、RetrofitはこのURLを作成します.Square文字列とRetrofit文字列をそれぞれownerとrepoパラメータとして入力した場合.このURLを入手します.https://api.github.com/repos/square/retrofit/contributorsクエリー・パラメータの追加
@GET("repos/square/{retrofit}/contributors")
Call> groupData(@Path("retrofit") String retrofit, @Query("sort") String sort);

getData()メソッドを呼び出すと、クエリーパラメータ文字列「ok」が入力され、URLが得られます.https://api.github.com/repos/square/retrofit/contributors?sort=okもちろんクエリーパラメータが多すぎる場合は、Mapを使用して組み合わせて転送することもできます.
@GET("repos/square/{retrofit}/contributors")
Call> getData(@Path("repos") String repos, @QueryMap Map parameters);

要求データ
Retrifotは同期と非同期の要求方式をサポートし、まずRetrofitクラスを使用してインタフェースNetWorkServiceの実現を生成する.
NetWorkService service = retrofit.create(NetWorkService.class);

同期要求
Call call = service.getData(Square,Retrofit);
DataBean bean = call.execute().body();

同期要求はプライマリ・スレッドで実行できないことに注意してください.また、callはexecute()メソッドを1回しか実行できません.再度要求するには、Call call = call.clone()を使用してCallオブジェクトをコピーします.
非同期リクエスト
call.enqueue(new Callback() {
    @Override
    public void onResponse(Call call, Response response) {
        Toast.makeText(MainActivity.this, "    ", Toast.LENGTH_SHORT).show();
        DataBean bean = response.body();
        tvMain.setText(bean.toString());
    }
    @Override
    public void onFailure(Call call, Throwable t) {
    }
});

同期または非同期でキューに参加すると、callをいつでも使用できます.cancel()メソッドはリクエストをキャンセルします.
に注意
注記のパラメータの書き方とBASE_URLのつづりは必ず注意して、以下の書き方を見てください.
エラー例1
  BASE_URL:https://api.github.com/repos/squareGet注記:@GET("/basil 2 style")結果URL:https://api.github.com/basil2style
エラー例2
  BASE_URL:https://api.github.com/repos/squareGet注記:@GET("basil 2 style")結果URL:https://api.github.com/repos/basil2style
推薦の書き方
  BASE_URL:https://api.github.com/repos/square/Get注記:@GET("basil 2 style")結果URL:https://api.github.com/repos/square/basil2style
まとめ
  Retrofit2.0の基本実装の説明が終わると、Retrofit+Okhttp+Gsonは現在ではかなり速いスーパーネットワークリクエストフレームワークと言える.Volleyよりずっと速くて、親測の結果はとても爽やかです.仲間たちは急いで片付けましょう.技術のくずは1枚、書くのが間違っている地方は大神達の伝言を歓迎して正して、どんな疑問あるいは分からない地方があっても私のGithubの上でRetrofit 2 DemoプロジェクトのIssuesの中で提出することができて、私は直ちに解答します.Retrofit 2 Demoのアドレスを添付:Retrofit 2 Demo