安卓 Java。网URI构造函数不是编码字符(&C)
我正在尝试创建一个URL,其中查询参数包含一个符号&;。当我将其传递给Java时。网uri(https://docs.oracle.com/javase/8/docs/api/java/net/URI.html)类构造函数不编码&;符号到%26
例如:https://www.anexample.com:443/hello/v5/letscheck/image/down?name=tom&jerry&episode=2
现在,汤姆和;jerry是查询参数的值,但当我们将其传递给Java时。网uri构造函数它编码所有空格和特殊符号,但不编码&;到26%
所以tom和jerry都成了单独的查询参数,这是我不想要的
代码如下所示:
String query = "name=tom&jerry&episode=2"
URI uri = new URI(scheme, null, host, port, path, query, null);
我还尝试自己对查询参数进行编码,然后将其发送给构造函数,如下所示:
String query = "name=tom%26jerry&episode=2"
URI uri = new URI(scheme, null, host, port, path, query, null);
但在这种情况下,编码参数变成tom%2526jerry,因为%被编码为%25
那么,我如何对其进行编码,以便发送&;内部作为查询参数
# 1 楼答案
你试过下面这种方法吗
更好的方法是循环查询的键值对,并将
URLEncoder
应用于该值,然后将查询的其余部分与&
连接在一起,或者在stream
,map
之后collect
。但关键是对查询字符串的值部分进行编码