<meta charset="utf-8">
一、正常的请求方式
使用retrofit做解析ApiServse中
@POST("")
Observable<需要解析实体类>getList2(@Header("User-Agent") String s);//括号中请求头可为空
Activity中
Observable list = getRetrofit("http://www.xxx.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://www.xxxx.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://www.xxx.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://www.xxx.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://www.xxx.com/").create(ApiService.class)
.withParams(body);
getNetData( body);
五、上传文件
普通表单的上传文件
File file = new File(fileUrl);
RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file);
MultipartBody.Part body = MultipartBody.Part.createFormData("file", file.getName(), requestFile);
@Multipart
@POST("xxxxx")
rx.Observable<ImageLoagBean> uploadFile(@Part MultipartBody.Part file, @Header("fileName")String
fileName, @Header("tokenId")String tokenId);
表单的方式上传文件携带参数
RequestBody block = RequestBody.create(MediaType.parse("text/plain"), "client");
RequestBody token = RequestBody.create(MediaType.parse("text/plain"),String.valueOf(Hawk.get(AppConfig.Token,"")));
/**
* 上传文件
*/
@Multipart
@POST("system/webservice/file/upload")
rx.Observable<UpLoadFileBean> uploadFile(@Part MultipartBody.Part file, @Part("token") RequestBody token ,
@Part("visitor_id") RequestBody visitor_id, @Part("block") RequestBody block );
binary方式上传
这种方式是没有键值对的与表单上传的方式不同,文件以二进制的方式直接放到body里进行上传
客户端接口代码
image.png
客户端代码实现
image.png
网友评论