我正在尝试传递以下格式的字符串作为 http 发布请求的正文。
param1=PARAM1¶m2=PARAM2¶m3=PARAM3
但是改造对我的 body 进行编码,使 = 变成\u003d 并且 & 变成\u0026。我最终得到一个实际上看起来像这样的字符串:
param1\u003dPARAM1\u0026param2\u003dPARAM2\u0026param3\u003dPARAM3
我怎样才能避免这种情况?
我的retrofit rest api定义如下。
public interface RestAPI {
@POST("/oauth/token")
public void getAccessToken(@Body String requestBody, Callback<Response> response);
}
最佳答案
如果您在请求主体中有一个序列化类(如 HashMap)并且您想要防止对其进行编码(如在 vezikon 和我的问题中),您可以创建一个禁用转义的自定义 Gson,使用:
Gson gson = new GsonBuilder().disableHtmlEscaping().create();
将此转换器传递给您的 rest 适配器:
yourRestAdapter = new RestAdapter.Builder()
.setEndpoint(.....)
.setClient(.....)
.setConverter(new GsonConverter(gson))
.build();
这样,帖子正文中的“=”字符在提交时保持不变。
关于java - 防止改造编码我的 http 请求正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26637340/