从网址中提取参数



我在 URI 上的字符+(也许还有其他人(有问题,应该得到一个解码的 url,但是当我提取查询时,+被替换

String decodedUrl = "www.foo.com?sign=AZrhQaTRSiys5GZtlwZ+H3qUyIY=&more=boo";
URIBuilder builder = new URIBuilder(decodedUrl);
List<NameValuePair> params = builder.getQueryParams();
String sign = params.get(0).getValue();

sing 的值是用空格而不是+ AZrhQaTRSiys5GZtlwZ H3qUyIY=的。如何提取正确的值?

其他方式是:

URI uri = new URI(decodedUrl);
String query = uri.getQuery();

在这种情况下,查询的值sign=AZrhQaTRSiys5GZtlwZ+H3qUyIY=&more=boo是正确的,但我必须剥离它。有没有其他方法可以做到这一点?

以不同的方式使用它:

String decodedUrl = "www.foo.com";
URIBuilder builder = new URIBuilder(decodedUrl);
builder.addParameter("sign", "AZrhQaTRSiys5GZtlwZ+H3qUyIY=");
builder.addParameter("more", "boo");
List<NameValuePair> params = builder.getQueryParams();
String sign = params.get(0).getValue();

addParameter 方法负责向构建器添加参数。构建器的构造函数应仅包含基 URL。

如果此 URL 按原样提供给您,则 + 已被解码并代表空格字符。如果您是生成此 URL 的人,则可能跳过了 URL 编码步骤(可以使用上面截取的代码完成(。

阅读一些有关 URL 编码的信息:http://en.wikipedia.org/wiki/Query_string#URL_encoding

这是因为

如果您在 url 中将空格作为参数发送,它将编码为 + .发生这种情况是因为有一些规则,哪些字符在 URL 中有效。请参阅 URL RFC。

必须使用"%"字符后跟两个十六进制数字的标准约定对 URL 中不允许的任何字符进行编码,包括不在允许的字符集中的空格和其他二进制数据。

如果你想在 url 中+作为符号,你需要将其编码为 %2B .例如,2+2编码为 2%2B2i am编码为 i+am 。所以在你的情况下,我相信你必须纠正结果,因为AZrhQaTRSiys5GZtlwZ+H3qUyIY解码为AZrhQaTRSiys5GZtlwZ H3qUyIY

相关内容

  • 没有找到相关文章

最新更新