ネットワーク要求フレームワークのRetrofit 2.0基本的な説明
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のバージョンの簡単な使用を検討しています.公式の例も参照できます.
準備作業
権限の追加
ネットワークリクエスト権限の最初の追加
依存の追加
Retrofit2.0バージョン以降はokhttpリクエストのみがサポートされ、カプセル化されており、okhttpの依存を追加する必要はありません.
単純な使用
次に、Retrofitの初期化とデータの要求方法を見てみましょう.
Retrofitオブジェクトの初期化
BASE_URLはあなたが要請したServerアドレスです.
Retrofit2.0 JSONデータを返すデフォルトの解析方式は提供されず、手動で指定する必要があり、Jacksonなど多くの解析方式をサポートする.必要に応じて依存を追加します.ここではRetrofitが提供するconverter-gson依存を追加します.ちょっと不快なのはFastJson解析をサポートしていないことで、必要があれば自分でFastjsonConverterFactoryを書いてConverterを継承することができます.Factory実装.だが0以降はokhttpリクエストのみサポートされますが、okhttpをカスタマイズしてRetrofitに再構成することもできます.
要求インタフェースの定義
HTTP APIをJavaインタフェースに変換することを実現し、Retrofitは5種類の内蔵注釈を提供した:GET、POST、PUT、DELETEとHEAD、注釈の中で指定した資源の相対的なURL.
置換ブロックとパラメータを使用して動的に更新します.置換ブロックは{and}で囲まれたアルファベット数からなる文字列で、対応するパラメータは同じ文字列を使用して@Pathに注釈される必要があります.
getData()というメソッドを呼び出すと、RetrofitはこのURLを作成します.Square文字列とRetrofit文字列をそれぞれownerとrepoパラメータとして入力した場合.このURLを入手します.https://api.github.com/repos/square/retrofit/contributorsクエリー・パラメータの追加
getData()メソッドを呼び出すと、クエリーパラメータ文字列「ok」が入力され、URLが得られます.https://api.github.com/repos/square/retrofit/contributors?sort=okもちろんクエリーパラメータが多すぎる場合は、Mapを使用して組み合わせて転送することもできます.
要求データ
Retrifotは同期と非同期の要求方式をサポートし、まずRetrofitクラスを使用してインタフェースNetWorkServiceの実現を生成する.
同期要求
同期要求はプライマリ・スレッドで実行できないことに注意してください.また、callはexecute()メソッドを1回しか実行できません.再度要求するには、
非同期リクエスト
同期または非同期でキューに参加すると、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
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