Retrofit Post请求方式

作者: Android_小菜鸡 | 来源:发表于2018-08-06 16:01 被阅读4818次


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);

相关文章

网友评论

    本文标题:Retrofit Post请求方式

    本文链接:https://www.haomeiwen.com/subject/ptpwvftx.html