以前都是使用
Observable<ResponseBody> login(@HeaderMap Map<String, String> headers, @QueryMap Map<String, String> map);
@QueryMap方式,将参数放入map中传输的
现在改用RequestBody的方式
Observable<ResponseBody> login(@HeaderMap Map<String, String> 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()); }