Retrofit用法(一)クイックスタート
13908 ワード
Retrofitの使用を学んだばかりで、ここでまとめてみると、メモを取ることに相当する一方で、興味のある初心者が早く勉強できるのも便利です.
ここでは自分で最も簡単なdemoを書きましたが、後期にはもっと多くの例を増やします.まず、プロジェクトディレクトリを見てみましょう.
ここにコードを貼って、後でゆっくり説明します.java
MainActivity.java
News.java
ここでGetリクエストを送信する手順を見てみましょう
開始前にプロジェクトに必要な依存ライブラリを追加
1.要求インタフェースクラスを新規作成します.このクラスで各要求、上のApiServicesを定義できます.JAvaではGetリクエストが1つしか定義されていませんが、デバッグを容易にするためにpaylistをローカルに取りました.jsonファイル、tomcatに入れて、ネットワークがこのインタフェースにアクセスすることをシミュレートして、あなたは必要に応じて自分のjsonファイルを構成することができます.
2.javabeanファイルを作成し、カプセル化して返すためのデータをstudioで開発した.ここではstudioのプラグインgsonformatを推奨し、プラグインライブラリでダウンロードすることができ、beanファイルをワンタッチで生成することができ、手動で構築する必要がなく、簡単で効率的である.3.要求を書くコード、やり方の一つで、ほかにもいろいろな書き方があるので、後で話しましょう.ここでは最も簡単なdemoですが、日常開発に満足できます.
Postリクエストの送信
ここでApiServiceにこのメソッドを追加し、@FeildはPostリクエストにリクエストパラメータを追加し、各Key-valueに対応して@FormUrlEncoded注記を追加する必要があります.
送信要求のコードは以下の通りで,ごく一部のコードのみが修正されている.
ここでは自分で最も簡単なdemoを書きましたが、後期にはもっと多くの例を増やします.まず、プロジェクトディレクトリを見てみましょう.
ここにコードを貼って、後でゆっくり説明します.java
public interface ApiService {
@GET("sk/paylist.json")
Call<News> getNews(@Query("platform")String platform,@Query("channel") String channel);
}
MainActivity.java
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private Button bt;
private String BaseUrl = "http://10.10.6.195:8080/";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt = (Button) findViewById(R.id.bt);
Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(BaseUrl)
.build();
final ApiService mApi = retrofit.create(ApiService.class);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Call<News> news = mApi.getNews("android", "100");
news.enqueue(new Callback<News>() {
@Override
public void onResponse(Call<News> call, Response<News> response) {
News s = response.body();
Log.d(TAG,s.getData().get(0).getName()+s.getData().get(0).getPrice());
}
@Override
public void onFailure(Call<News> call, Throwable t) {
Log.d(TAG+"4",t.toString());
}
});
}
});
}
}
News.java
package com.a4kgarden.mytest;
import java.util.List;
/** * Created by HY on 2017/2/28. */
public class News {
/** * errMsg : * errCode : 0 * data : [{"time":"2016-11-08 18:18:29","price":"0.01","name":" "},{"time":"2016-11-08 18:18:32","price":"0.01","name":" "},{"time":"2016-11-08 18:18:36","price":"0.01","name":" "}] * version : 1.0.0 */
private String errMsg;
private String errCode;
private String version;
private List<DataBean> data;
public String getErrMsg() {
return errMsg;
}
public void setErrMsg(String errMsg) {
this.errMsg = errMsg;
}
public String getErrCode() {
return errCode;
}
public void setErrCode(String errCode) {
this.errCode = errCode;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public List<DataBean> getData() {
return data;
}
public void setData(List<DataBean> data) {
this.data = data;
}
public static class DataBean {
/** * time : 2016-11-08 18:18:29 * price : 0.01 * name : */
private String time;
private String price;
private String name;
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
ここでGetリクエストを送信する手順を見てみましょう
開始前にプロジェクトに必要な依存ライブラリを追加
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
1.要求インタフェースクラスを新規作成します.このクラスで各要求、上のApiServicesを定義できます.JAvaではGetリクエストが1つしか定義されていませんが、デバッグを容易にするためにpaylistをローカルに取りました.jsonファイル、tomcatに入れて、ネットワークがこのインタフェースにアクセスすることをシミュレートして、あなたは必要に応じて自分のjsonファイルを構成することができます.
@GET("sk/paylist.json")// URL , MainActivity BaseUrl Call<News> getNews(@Query("platform")String platform,@Query("channel") String channel);
/* @query get Url ? , demo , http://10.10.6.195:8080/sk/paylist.json?platform=android&channel=XIAOMI */
demo json , , 。
2.javabeanファイルを作成し、カプセル化して返すためのデータをstudioで開発した.ここではstudioのプラグインgsonformatを推奨し、プラグインライブラリでダウンロードすることができ、beanファイルをワンタッチで生成することができ、手動で構築する必要がなく、簡単で効率的である.3.要求を書くコード、やり方の一つで、ほかにもいろいろな書き方があるので、後で話しましょう.ここでは最も簡単なdemoですが、日常開発に満足できます.
Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(BaseUrl)
.build();
final ApiService mApi = retrofit.create(ApiService.class);
Call<News> news = mApi.getNews("android", "100");
news.enqueue(new Callback<News>() {
@Override
public void onResponse(Call<News> call, Response<News> response) {
News s = response.body();// , ,
Log.d(TAG,s.getData().get(0).getName()+s.getData().get(0).getPrice());
}
@Override
public void onFailure(Call<News> call, Throwable t) {
Log.d(TAG+"4",t.toString());
}
});
Postリクエストの送信
ここでApiServiceにこのメソッドを追加し、@FeildはPostリクエストにリクエストパラメータを追加し、各Key-valueに対応して@FormUrlEncoded注記を追加する必要があります.
@FormUrlEncoded @POST("pay/order") Call<OrderBean> getOrderId(@Field("productId") String productId, @Field("contentId") String contentId, @Field("seriesCode") String seriesCode, @Field("spId") String spId, @Field("userId") String userId, @Field("price") String price );
送信要求のコードは以下の通りで,ごく一部のコードのみが修正されている.
Call<OrderBean> order = mApi.getOrderId("10001","101","432","100","sdjgkdjlkgj","0.01");
order.enqueue(new Callback<OrderBean>() {
@Override
public void onResponse(Call<OrderBean> call, Response<OrderBean> response) {
OrderBean s = response.body();
Log.d(TAG,s.getData());
}
@Override
public void onFailure(Call<OrderBean> call, Throwable t) {
Log.d(TAG+"4",t.toString());
}
});