文章目錄
- 問題
- 解決
- 原因
- 解決方案一:自己拼接json字符串,@Body使用RequestBody類型,比如
- 解決方案二:修改Retrofit的Gson
問題
因為傳遞的參數字符串中有等號 = ,結果傳遞的時候,打印出來
原始字符串:xMzk0OA==68bcd22b
okhttp打印出來的:xMzk0OA\u003d\u003d68bcd22b
等號被轉義了
解決
原因
Gson解析的時候轉義了
解決方案一:自己拼接json字符串,@Body使用RequestBody類型,比如
Retrofit接口@POST("xxx")
suspend fun ab(@Body request: RequestBody): XXXX調用的時候
val transid = "xMzk0OA==68bcd22b"
val str = "{transid:$transid,pindex:$pindex,type:1}"
val contentType = "application/json; charset=utf-8".toMediaTypeOrNull()
val requestBody = str.toRequestBody(contentType)
val result = apiService.ab(requestBody) // 調用retrofit接口
解決方案二:修改Retrofit的Gson
// 這個是一個不會進行轉義的gson
val gson = GsonBuilder().disableHtmlEscaping().create()Retrofit.Builder().client(getOkHttpClient()).addConverterFactory(GsonConverterFactory.create(gson))調用的時候,就可以使用 @Body 傳遞自己的類型了