1. 程式人生 > >android retrofit 請求引數格式RequestBody的方法

android retrofit 請求引數格式RequestBody的方法

以前都是使用

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());
}