以前都是使用
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()); }