java - 防止改造编码我的 http 请求正文

标签 java json retrofit

我正在尝试传递以下格式的字符串作为 http 发布请求的正文。

param1=PARAM1&param2=PARAM2&param3=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/

相关文章:

java - 将 JIRA 5.1 升级到 JIRA 6

java - Java 中的 ArrayList<DisplayMode> 空指针异常

java - ${getText(fieldName)} 在客户端验证中不显示任何内容

android - Retrofit 将 json 变量映射到关键字

Java静态变量被赋予空值

javascript - "Hydrate"一个带有 json 数组的 Javascript 对象实例,就像 PHP 一样

java - 从 Jsp 发送 Json 数据到 Rest Controller 时出现 415(不支持的媒体类型错误)

html - 使用 HTML 表单提交对象的 JSON 数组

java - 如何从 Retrofit 的 onResponse 函数返回值?

java - 如何在Android POST方法中与body一起使用Retrofit?