[英]Extract parameters from URL
我在URIBuilder上的字符+
(可能还有其他字符)有问题,应该是获取了解码的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();
唱的值是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%2B2
而i am
编码为i+am
。 因此,在您的情况下,我认为您必须更正结果,因为AZrhQaTRSiys5GZtlwZ+H3qUyIY
解码为AZrhQaTRSiys5GZtlwZ H3qUyIY
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.