java - 如何在 Java 中将字符串转换为 x-www-form-urlencoded?
问题描述
我有一个字符串
"To=\"+911234567899\"&From=\"+9987654321\"&Body=\"Hen\""
我需要将其转换为 x-www-form-urlencoded 格式。
如果我URLEncoder.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
为什么会有这种差异?另外我需要发送请求,因为它在邮递员(第二个编码字符串)中完全相同,然后只有我得到响应。如何以第二种格式编码我的字符串?
解决方案
您可能对字符串进行了双重编码。也许您不应该自己编码查询字符串,而让 URLEncoder 为您完成工作。
这是一个示例,假设我在 hashmap 中有键和值this.params
。
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()
推荐阅读
- php - Laravel 5.5 下拉框
- python - 结合多个标准
- r - 如何从 R 中的 coxph 和脆弱模型更改风险比的单位增量?
- c++ - 如何调用已保存在自定义结构向量中的成员函数指针?
- php-gmp - 无法在 mac os php@7.1 上安装/启用 gmp
- python - 将 N-Sum 减少为两个和
- php - 如何正确地从数组中获取信息以便可以插入数据库?
- flutter - 按下按钮时如何在 Flutter 上更改文本样式
- spring-batch - Spring Batch CompositeItemWriter 如何为委托编写者管理事务?
- apache-spark - Spark 抛出 FileNotFoundException 并说“刷新表表名”