RetrofitはHIに爽やかなネットワークロードライブラリです
筆者は今日、Retrofitというライブラリをプロジェクトに追加して使用し始めましたが、使用後、このライブラリが爆発するほど簡単であることに気づきました.オープンソースアドレス:https://github.com/square/retrofit
使用方法:
①依存関係の追加
②使用開始
まず、筆者がプロジェクトを開発する際のインタフェースドキュメントであるリクエストアドレスを参照してください.
グローバルインタフェースアドレスhttp://192.168.0.110/lepa/api/web/controller/method
http://192.168.0.110:80/lepa/api/web/固定不変のcontroller/methodは動的controller:現在要求されているコントローラmethod:現在要求されているメソッド名
たとえば、ショッピングモールのホームページをリクエストする場合、リクエストする住所は次のとおりです.http://192.168.0.110/lepa/api/web/site/indexショッピングモールの商品分類をお願いするとき、住所は:http://192.168.0.110/lepa/api/web/goods/get-goods-list
コントローラとメソッド名は変更されます.つまり、後の2つです.携帯電話はデータを提出するときにtokenなどの他のフォーム値を提出し、リクエストヘッダheadersも提出します.では、Retrofitを使用してリクエストすると、これらは容易になります.
1)要求インタフェースの作成
@Headersではリクエストヘッダ情報を設定し,@GETではgetリクエスト,@Pathでは可変パス,@Queryではコミットデータを設定する.MallBeanとAdvertBeanは筆者がjsonに基づいて回転したエンティティクラスで、ここでandroid studioのプラグインを使用して、ワンクリックで変換を完了することができます.プラグイン名は「GsonFormat」です.getResultとgetAdvertResultは、カスタム定義されたメソッド名です.
2)要求オブジェクトの作成
GsonConverterFactoryは自動Gson変換ツールです.筆者はjsonデータを解析する必要があります.
次の方法でリクエストを開始します.
呼び出し
の場合、以下のアドレスを要求することに相当します.http://192.168.0.110/lepa/api/web/site/adv-slide?api_token=xxxxx
リクエストインタフェースを書くだけで、次のリクエスト方法は非常に簡単になります.インタフェースドキュメントに従ってコントローラ名/メソッド名をコピーすればいいです.ハハハ.
使用方法:
①依存関係の追加
compile 'com.squareup.okhttp3:okhttp:3.2.0'
compile 'com.squareup.retrofit2:converter-gson:2.0.0'
compile 'com.squareup.retrofit2:retrofit:2.0.0'
②使用開始
まず、筆者がプロジェクトを開発する際のインタフェースドキュメントであるリクエストアドレスを参照してください.
グローバルインタフェースアドレスhttp://192.168.0.110/lepa/api/web/controller/method
http://192.168.0.110:80/lepa/api/web/固定不変のcontroller/methodは動的controller:現在要求されているコントローラmethod:現在要求されているメソッド名
たとえば、ショッピングモールのホームページをリクエストする場合、リクエストする住所は次のとおりです.http://192.168.0.110/lepa/api/web/site/indexショッピングモールの商品分類をお願いするとき、住所は:http://192.168.0.110/lepa/api/web/goods/get-goods-list
コントローラとメソッド名は変更されます.つまり、後の2つです.携帯電話はデータを提出するときにtokenなどの他のフォーム値を提出し、リクエストヘッダheadersも提出します.では、Retrofitを使用してリクエストすると、これらは容易になります.
1)要求インタフェースの作成
public interface MallRequest {
@Headers({
"User-Agent: Android"
})
@GET("{controller}/{method}")
Call<MallBean> getResult(
@Path("controller") String controller,
@Path("method") String method,
@Query("api_token") String api_token);
@GET("{controller}/{method}")
Call<AdvertBean> getAdvertResult(
@Path("controller") String controller,
@Path("method") String method,
@Query("api_token") String api_token
);
}
@Headersではリクエストヘッダ情報を設定し,@GETではgetリクエスト,@Pathでは可変パス,@Queryではコミットデータを設定する.MallBeanとAdvertBeanは筆者がjsonに基づいて回転したエンティティクラスで、ここでandroid studioのプラグインを使用して、ワンクリックで変換を完了することができます.プラグイン名は「GsonFormat」です.getResultとgetAdvertResultは、カスタム定義されたメソッド名です.
2)要求オブジェクトの作成
Retrofit mRetrofit = new Retrofit.Builder()
.baseUrl("http://192.168.0.110/lepa/api/web/")
.addConverterFactory(GsonConverterFactory.create())
.build();
MallRequest mMallRequest = mRetrofit.create(MallRequest.class);
GsonConverterFactoryは自動Gson変換ツールです.筆者はjsonデータを解析する必要があります.
{
"code": "success",
"message": "success!",
"data": [ { "a_id": "8", "sort": "0", "pic_url": "http://192.168.0.110/res/upload/image/default/2016/01/271453863969128320.png", "repeat": "mod=details&id=42" }, { "a_id": "13", "sort": "0", "pic_url": "http://192.168.0.110/res/upload/image/default/2016/01/271453863968246399.png", "repeat": "mod=details&id=43" }, { "a_id": "15", "sort": "0", "pic_url": "http://192.168.0.110/res/upload/image/default/2016/01/271453863969109055.png", "repeat": "mod=details&id=4" }, { "a_id": "14", "sort": "3", "pic_url": "http://192.168.0.110/res/upload/image/default/2016/01/271453863969115987.png", "repeat": "mod=list&id=40" } ] }
次の方法でリクエストを開始します.
Call<AdvertBean> call = mMallRequest.getAdvertResult("site", "adv-slide", LepaApiToken.getToken("site", "adv-slide"));
call.enqueue(new Callback<AdvertBean>() {
@Override
public void onResponse(Call<AdvertBean> call, retrofit2.Response<AdvertBean> response) {
if (response.isSuccessful()) {
Log.d("debug", "response" + response.body().getData().get(2).getPic_url());
if (response.body().getCode().equals("success")) {
int dataCount = response.body().getData().size();
List<Map<String, String>> list = new ArrayList<>();
Map<String, String> map;
for (int i = 0; i < dataCount; i++) {
map = new HashMap<>();
map.put("a_id", response.body().getData().get(i).getA_id());
map.put("sort", response.body().getData().get(i).getSort());
map.put("pic_url", response.body().getData().get(i).getPic_url());
map.put("repeat", response.body().getData().get(i).getRepeat());
list.add(map);
}
AdvertPagerAdapter adapter = new AdvertPagerAdapter(getActivity(), list);
viewpager_tabmall_showAdvert.setAdapter(adapter);
indicator_tabmall.setViewPager(viewpager_tabmall_showAdvert);
}
}
}
@Override
public void onFailure(Call<AdvertBean> call, Throwable t) {
Log.d("debug", "error" + t.toString());
}
});
呼び出し
Call<AdvertBean> call = mMallRequest.getAdvertResult("site", "adv-slide", LepaApiToken.getToken("site", "adv-slide"));
の場合、以下のアドレスを要求することに相当します.http://192.168.0.110/lepa/api/web/site/adv-slide?api_token=xxxxx
リクエストインタフェースを書くだけで、次のリクエスト方法は非常に簡単になります.インタフェースドキュメントに従ってコントローラ名/メソッド名をコピーすればいいです.ハハハ.