retrofit2使⽤json请求和form表单请求retrofit2使⽤json请求和form表单请求
json请求和form表单请求的区别
json和form表单请求的区别主要是以下两点
content-type不⼀致
数据格式不⼀致
注:图⽚为⽹络图⽚,侵删json:
form表单:
retrofit分别实现
json实现
1. 先看retrofit的接⼝实现部分,使⽤json⽅式请求,我们需要使⽤@body来传⼊参数
2. 不能添加@FormUrlEncoded 不然会报错
/**
* 创建任务
*/
@POST("prodmd/mapdesktop/api/mvls/t")
Observable<ResponseBody>createMission(@Body RequestBody info);
3. 在看传⼊参数部分,我需要把数据转成json格式,放⼊RequestBody 中并申明content-Type是json类型,在开始请求就⾏ HashMap<String, Object> paramsMap =new HashMap<>();
paramsMap.put("geoId", TaskId());
paramsMap.put("geoName", TaskName());
paramsMap.put("featureType", FeatureType().getType());
paramsMap.put("userName", UserName());
paramsMap.put("geoStr", stringBuilder);
paramsMap.put("bizType","300");
//需要把数据转成json格式
String strEntity = Json(paramsMap);
//添加contentType
RequestBody requestBody = ate(MediaType.parse("application/json"), strEntity);
//开始请求
ateTaskApi().createMission(requestBody)
.
observeOn(AndroidSchedulers.mainThread())
android retrofit.subscribeOn(Schedulers.io())
.subscribe(new Consumer<ResponseBody>(){
@Override
public void accept(ResponseBody responseBody)throws Exception {
getView().TaskId());
}
}, throwable ->{
ToastUtil.showToast("创建任务出现错误:"+ String());
}));
form表单
1. 先看retrofit的接⼝实现部分,使⽤表单⽅式请求,我们只需要把参数⽤@Field接受即可
2. ⼀定要加上@FormUrlEncoded不然会报错
/**
* 删除任务
*
* @param taskId
* @return
*/
@FormUrlEncoded
@POST("mission/api/deleteFlyTask")
Observable<ResponseBody>deleteMission(@Field("flyId") String taskId);
3. 在看传⼊参数部分,只要正常调⽤即可
ateTaskApi().deleteMission(taskId) .wThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseBody>(){
@Override
public void accept(ResponseBody responseBody)throws Exception {
delSuccess(position);
}
}, throwable ->{
delSuccess(position);
// delFiled();
}));
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论