java – 在Jersey Client 2中编码花括号
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 在Jersey Client 2中编码花括号,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1409字,纯文字阅读大概需要3分钟。
内容图文
![java – 在Jersey Client 2中编码花括号](/upload/InfoBanner/zyjiaocheng/750/ca66aa0fd91b4a29a22b0b075e4a10f2.jpg)
我们正在使用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} }
泽西客户端有什么问题,或者我错过了什么?花括号应编码为“{”.
解决方法:
当您使用卷曲值创建参数时,Jersey认为您要使用URL参数.见https://jersey.github.io/documentation/latest/uris-and-links.html.
UriBuilder.fromUri("http://localhost/")
.path("{a}")
.queryParam("name", "{value}")
.build("segment", "value");
因此,您应该通过URLEncoder编码花括号,可能如下所述:How to force URIBuilder.path(…) to encode parameters like “%AD”? This method doesn’t always encode parameters with percentage, correctly.
内容总结
以上是互联网集市为您收集整理的java – 在Jersey Client 2中编码花括号全部内容,希望文章能够帮你解决java – 在Jersey Client 2中编码花括号所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。