繁体   English   中英

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

[英]How to convert a string to x-www-form-urlencoded in Java?

我有一个弦

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

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

如果我在Java中使用URLEncoder.encode() ,则该函数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

为什么会有这种差异? 我还需要发送请求,因为它与邮递员(第二个编码的字符串)完全相同,然后只有我得到了响应。 如何以第二种格式编码我的字符串?

您可能对字符串进行了双重编码。 也许您不应该自己对查询字符串进行编码,而让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() url + "?" + param.toString()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM