我有一个字符串
"To=\"+911234567899\"&From=\"+9987654321\"&Body=\"Hen\""
我需要将其转换为x-www-form-urlencoded格式。
如果我在Java中使用URLEncoder.encode()
,则该函数会将字符串转换为
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
为什么会有这种区别?我还需要发送请求,因为它与邮递员(第二个编码的字符串)完全相同,然后只有我得到了响应。如何以第二种格式编码我的字符串?
答案 0 :(得分:0)
您可能对字符串进行了双重编码。也许您不应该自己对查询字符串进行编码,而让URLEncoder为您完成工作。
这里是一个示例,假设我在哈希映射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()