当前位置: 首页 > 知识库问答 >
问题:

如何将字符串转换为Java中的x-www-form-urlencoded?

仉昱
2023-03-14

我有一根弦

"To=\"+911234567899\"&From=\"+9987654321\"&Body=\"Hen\""

我需要将其转换为x-www-form-urlencoded格式。

如果我使用urlcoder。encode()在Java中,函数将字符串转换为

To%3D%22%2B911234567899%22%26From%3D%22%2B9987654321%22%26Body%3D%22Hen%22

但当我以x-www-form-urlencoded的形式从邮递员那里发送请求时,得到的请求是

To=%22%2B911234567899%22&From=%22%2B9987654321%22&Body=%22Hen%22

为什么会有这种差异?我还需要发送请求,因为它在postman中是完全相同的(第二个编码字符串),然后只有我得到了回复。如何将字符串编码为第二种格式?

共有1个答案

钱志强
2023-03-14

您可能对字符串进行了双重编码。也许您不应该自己对查询字符串进行编码,让URLEncoder为您完成这项工作。

下面是一个例子,假设我在hashmapthis中有键和值。参数

this.params.put(key, URLEncoder.encode(value.toString(), "UTF-8")); // set the key/value

StringBuilder param = new StringBuilder("");
for (Map.Entry<String, Object> item : this.params.entrySet()) {
    if (param.toString().length() != 0) {
        param.append('&');
    }
    param.append(item.getKey());
    param.append('=');
    param.append(item.getValue().toString());
}

现在param.toString()将被正确编码。将其与url"?"param.toString()一起使用

 类似资料:
  • 问题内容: 我有一个,我需要一个。如何从一个转换为另一个? 问题答案: 好问题。我有以下五种 6种方法可以做到这一点。 注意:返回。因此有效地两者是相同的。 调用,这又设置了数组。 另一方面,调用以下程序包私有构造函数。 从源代码中的Java 8的源代码 因此似乎是最有效的方法,在这两个存储器和速度方面,用于转换char到String。

  • 谁能让我知道如何在Java将protobuf字节字符串转换成字符串吗? 在我的例子中,我获得的字节字符串值为“\376\024\367”。有没有办法从bytestring中得到与String相同的东西?我的意思是,当我使用system.out.println()在控制台中打印字符串值时,我应该得到\376\024\367。 多谢。

  • 如何将转换为Java中的? 我的字符串只包含数字,我想返回它所代表的数字。 例如,给定字符串时,结果应该是数字。

  • 有没有办法将Java转换为(而不是装箱的)? 在尝试此过程中: 我得到了不同的输出。无法显示第一个输出,因为它是gzip字符串。 第二个是地址。我做错什么了吗?我需要一个中的结果来将其馈送到gzip解压缩器,如下所示。

  • 问题内容: 有什么方法可以将Java转换而不是盒装)? 在尝试这个: 我得到单独的输出。由于是gzip字符串,因此无法显示第一个输出。 第二个是地址。我做错了什么吗?我需要将结果byte[]送入gzip解压缩器,如下所示。 问题答案: 你的方法需要的对象是。 因此,对你提出的问题的基本技术回答是: 但是,你似乎在努力解决的问题是,它显示得不是很好。调用toString()只会为你提供默认名称,即类

  • 我有一个Jersey 2.22 rest web服务,我的一个endpoint有以下签名: 我使用PostMan调用这个web服务,在post请求中不传递任何特定的头,我将“query”form param传递为“x-www-form-urlencoded”。 jersey应用程序由Tomcat 7托管,该Tomcat 7以JVM编码UTF-8文件启动。编码UTF-8,并将连接器的URIEncod