添加依赖
//retrofit网络请求框架
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
//retrofit添加Json解析返回数据
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
implementation 'com.orhanobut:logger:2.1.0' // 打印日志
具体使用
第一步,先生成需要请求的json数据的,bean类。
public class NewBean {
/**
* res_code : 200
* err_msg :
* demo : {"id":"1001","name":"sss","appid":"1022","showtype":"text"}
*/
private int res_code;
private String err_msg;
private DemoBean demo;
public int getRes_code() {
return res_code;
}
public void setRes_code(int res_code) {
this.res_code = res_code;
}
public String getErr_msg() {
return err_msg;
}
public void setErr_msg(String err_msg) {
this.err_msg = err_msg;
}
public DemoBean getDemo() {
return demo;
}
public void setDemo(DemoBean demo) {
this.demo = demo;
}
public static class DemoBean {
/**
* id : 1001
* name : sss
* appid : 1022
* showtype : text
*/
private String id;
private String name;
private String appid;
private String showtype;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAppid() {
return appid;
}
public void setAppid(String appid) {
this.appid = appid;
}
public String getShowtype() {
return showtype;
}
public void setShowtype(String showtype) {
this.showtype = showtype;
}
@Override
public String toString() {
return "DemoBean{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", appid='" + appid + '\'' +
", showtype='" + showtype + '\'' +
'}';
}
}
@Override
public String toString() {
return "NewBean{" +
"res_code=" + res_code +
", err_msg='" + err_msg + '\'' +
", demo=" + demo +
'}';
}
}
第二步,创建一个api地址接口
// 无带参数的get请求
@GET("values/5")
Call<NewBean> getRetrofit();
在调用处使用
public void getRetrofit() {
OkHttpClient client = new OkHttpClient().newBuilder()
//设置读取超时的时间
.readTimeout(10, TimeUnit.SECONDS)
//设置连接超时的时间
.connectTimeout(10,TimeUnit.SECONDS)
//设置写入超时的时间
.writeTimeout(10,TimeUnit.SECONDS)
//添加打印拦截器
.addInterceptor(new HttpLoggingInterceptor())
//设置出现错误进行重新连接
.retryOnConnectionFailure(true)
.build();
Retrofit retrofit =new Retrofit.Builder()
.client(client)
//基地址
.baseUrl("http://120.78.186.81/api/")
.addConverterFactory(GsonConverterFactory.create())
.build();
ApiUrl api = retrofit.create(ApiUrl.class);
Call<NewBean> demo =api.getRetrofit();
demo.enqueue(new Callback<NewBean>() {
@Override
public void onResponse(Call<NewBean> call, Response<NewBean> response) {
Log.e("DJ", "请求成功信息: "+response.body().toString());
tv_success.setText(response.body().toString());
NewBean newBean =new NewBean();
int res_code = newBean.getRes_code();
Log.e("DJ", "res_code: "+res_code);
}
@Override
public void onFailure(Call<NewBean> call, Throwable t) {
Log.e("DJ", "请求失败信息: " +t.getMessage());
tv_fail.setText(t.getMessage());
}
});
}
Retrofit+Rxjava
添加依赖:
//retrofit网络请求框架
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
//retrofit添加Json解析返回数据
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
//retrofit添加Rxjava支持
implementation 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
//rxjava框架
implementation 'com.trello.rxlifecycle2:rxlifecycle-components:2.1.0'
public interface ApiUrl {
@GET(ContentsJson.BASE_ONE_JSON_DAN_ONE1)
Call<DataBean1> getRetrofit();
@GET(ContentsJson.BASE_ONE_JSON_DAN_ONE1)
Observable<DataBean1> getDemo();
}
具体使用
private void getRetrofit() {
OkHttpClient client = new OkHttpClient().newBuilder()
.readTimeout(ContentsJson.DEFAULT_TIME, TimeUnit.SECONDS)//设置读取超时时间
.connectTimeout(ContentsJson.DEFAULT_TIME, TimeUnit.SECONDS)//设置请求超时时间
.writeTimeout(ContentsJson.DEFAULT_TIME,TimeUnit.SECONDS)//设置写入超时时间
.addInterceptor(new LogInterceptor())//添加打印拦截器
.retryOnConnectionFailure(true)//设置出现错误进行重新连接。
.build();
Retrofit retrofit = new Retrofit.Builder()
.client(client)
.baseUrl(ContentsJson.URL_BASE)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
//添加GSON解析:返回数据转换成GSON类型
.addConverterFactory(GsonConverterFactory.create())
.build();
Log.e("RetrofitActivity","----getDemo:");
ApiUrl api = retrofit.create(ApiUrl.class);
api.getDemo().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<DataBean1>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(DataBean1 dataBean1) {
String chinesename = dataBean1.getLine_fourteen().getContent().getPage_data().get(0).getChinesename();
Log.e("RetrofitActivity","----chinesename:"+chinesename);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});