utils类
1.封装头部
private Retrofit getRetrofit(String url) {
Retrofit retrofit =new Retrofit.Builder()
.baseUrl(url)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create()).build();
return retrofit;
2.封装底部
private void getNetData(Observable observable) {
observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
Log.e("网络请求错误", e.toString());
}
@Override
public void onNext(Object o) {
Log.e("成功返回数据", o.toString());
}
});
3、封装接收值
一、正常的请求方式
使用retrofit做解析ApiServse中
@POST("")
Observable<需要解析实体类>getList2(@Header("User-Agent") String s);//括号中请求头可为空
Activity中
Observable list = getRetrofit("http://a.a.a.com/").create(ApiService.class)
.getList2("rxl");//如果上面请求头为空这个括号也为空
getNetData(list);
二、动态传值方式
使用retrofit做解析ApiServse中
@POST("{list}/{newId}/{page}-10.html")
Observable<需要解析实体类> getList(@Header("User-Agent") String s,
@Path("list") String list,@Path("newId") String newId,@Path("page")int page);
Activity中
Observable list = getRetrofit("http://a.a.a.com/").create(ApiService.class)
.getList("rxl","list","T134",0);
getNetData(list);
三、拼接参数提交方式
1、Form表单正常的提交方式
使用retrofit做解析ApiServse中
@FormUrlEncoded
@POST("")
Observable<需要解析实体类> withParams(@Field("createCollegeId") String createCollegeId,@Field("loginName")String loginName,@Field("password")String password);
Activity中
Observable observable = getRetrofit("http://a.a.a.com/").create(ApiService.class)
.withParams("73","15100133517","a12345");
getNetData(observable);
2、map表单提交方式
使用retrofit做解析ApiServse中
@FormUrlEncoded
@POST("")
Observable<需要解析实体类> withMap(@FieldMap Map params);
Activity中
final Map params =new HashMap<>();
params.put("createCollegeId","73");
params.put("loginN","15100133517");
params.put("password","a12345");
Observable observable = getRetrofit("http://a.a.a.com/").create(ApiService.class)
.withMap(params);
getNetData(observable);
四、带请求体的请求方式(body以json形式传入)
使用retrofit做解析ApiServse中
@POST(".")
Observable <需要解析实体类> getData(@Body RequestBody requestBody);
Activity中
MediaType JSON = MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(JSON,"{\"userId\":\"aadc2d9fe76f4b89bf37ca738e23eafe\",\"channelId\":\"b9240eee3b0211e8b64c00163e30445d\",\"cursor\": 0}");
Observable observable = getRetrofit("http://a.a.a.com/").create(ApiService.class)
.withParams(body);
getNetData( body);