以前都是使用

Observable login(@HeaderMap Map headers, @QueryMap Map map);

@QueryMap方式,将参数放入map中传输的

现在改用RequestBody的方式

Observable login(@HeaderMap Map headers, @Body RequestBody requestBody);

那么如何转换呢,很简单,只需要把以前的map封装一下即可得到RequestBody作为参数了

import okhttp3.MediaType;

import okhttp3.MultipartBody;

import okhttp3.Request;

import okhttp3.RequestBody;

/**

* 将map数据转换为 普通的 json RequestBody

* @param map 以前的请求参数

* @return

*/

public static RequestBody convertMapToBody(Map,?> map) {

return RequestBody.create(MediaType.parse("application/json; charset=utf-8"), new JSONObject(map).toString());

}

/**

* 将map数据转换为图片,文件类型的 RequestBody

* @param map 以前的请求参数

* @return 待测试

*/

public static RequestBody convertMapToMediaBody(Map,?> map) {

return RequestBody.create(MediaType.parse("multipart/form-data; charset=utf-8"), new JSONObject(map).toString());

}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐