gpt4 book ai didi

java - Java中转义保留的url参数

转载 作者:行者123 更新时间:2023-12-02 04:34:56 24 4
gpt4 key购买 nike

我正在构建一个 Android 应用程序,该应用程序的一部分需要将一些表单数据发布到 URL。我传递的表单字段之一是电子邮件地址。

我注意到一个问题,某些电子邮件地址中带有“+”号,这是 URL 中的保留字符,表示“”。我想知道,在将代码转换为后字节 [] 之前,如何清理/转义代码中的此类字符和其他字符。我不想做replaceAll。 Java 中是否有内置的特定编码器可以执行此操作?

这是我使用的代码:

StringBuilder builder = new StringBuilder();
builder.append(ID + "=" + params.id + "&");
builder.append(LOCALE + "=" + params.locale + "&");
builder.append(EMAIL + "=" + params.getEmail());

String encodedParams = builder.toString();
mWebView.postUrl(URL, EncodingUtils.getAsciiBytes(encodedParams));

最佳答案

尝试使用 java.net.URLEncoder.encode(valueToEncode, "UTF-8");

我已经有一段时间没有查看详细信息了,但我相信您必须在连接字符串的各个部分之前调用encode()。

下面的实用方法对我来说效果很好:

    /**
* Given a {@link Map} of keys and values, this method will return a string
* that represents the key-value pairs in
* 'application/x-www-form-urlencoded' MIME format.
*
* @param keysAndValues
* the keys and values
* @return the data in 'application/x-www-form-urlencoded' MIME format
*/
private String wwwFormUrlEncode(Map<String, String> keysAndValues) {
try {
StringBuilder sb = new StringBuilder();
boolean isFirstEntry = true;
for (Map.Entry<String, String> argument : keysAndValues.entrySet()) {
if (isFirstEntry) {
isFirstEntry = false;
} else {
sb.append("&");
}
sb.append(URLEncoder.encode(argument.getKey(), "UTF-8"));
sb.append("=");
sb.append(URLEncoder.encode(argument.getValue(), "UTF-8"));
}
return sb.toString();
} catch (UnsupportedEncodingException e) {
//it is unlikely that the system does not support UTF-8 encoding,
//so we will not bother polluting the method's interface with a checked exception
throw new RuntimeException(e);
}
}

关于java - Java中转义保留的url参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30949303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com