繁体   English   中英

从URL提取参数

[英]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%2B2i am编码为i+am 因此,在您的情况下,我认为您必须更正结果,因为AZrhQaTRSiys5GZtlwZ+H3qUyIY解码为AZrhQaTRSiys5GZtlwZ H3qUyIY

暂无
暂无

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

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