【发布时间】:2016-06-10 02:45:00
【问题描述】:
我们正在使用 Jersey Client 2.21。我注意到当我们将花括号(又名花括号)作为参数值时,它没有得到正确编码。不仅如此,花括号内的任何内容也不会被编码。这不适用于我测试过的常规括号或其他不安全字符。
请看下面的例子。在此示例中,我输入了三个参数。只有空格的控制参数。一个带花括号,一个带常规括号。
public static void testJerseyEncoding() {
Client client = ClientBuilder.newClient();
String url = "http://foo.com/path";
Map<String, String> map = new HashMap<>();
map.put("paramWithCurly", " {with a space}");
map.put("paramWithOutCurly", "with a space");
map.put("paramWithBracket", "[with a space]");
WebTarget target = client.target(url);
for (Map.Entry<String, String> entry : map.entrySet()) {
target = target.queryParam(entry.getKey(), entry.getValue());
}
System.out.println(target.toString());
}
这是输出:
JerseyWebTarget { http://foo.com/path?paramWithBracket=%5Bwith+a+space%5D¶mWithOutCurly=with+a+space¶mWithCurly=+{with a space} }
是泽西客户端出了问题还是我遗漏了什么?花括号应该已经编码为“%7B”。
【问题讨论】:
标签: java urlencode jersey-2.0 url-encoding jersey-client