我正在使用 的com.sun.jersey.api.uri.UriBuilderImpl
实现UriBuilder
来编码 URL(版本 1.19)。当我的 URL 的查询参数包含大括号和空格时,就会出现问题。
例子:
UriBuilder uriBuilder = fromUri("www.something.com")
.queryParam("q", "{some thing}");
return uriBuilder.build().toString();
这失败了:
javax.ws.rs.core.UriBuilderException: java.net.URISyntaxException: Illegal character in query at index 27: www.something.com?q=%7Bsome thing%7D
这很有趣,就好像我把大括号拿走一样,我得到了预期的编码:www.something.com?q=some+thing
......
org.apache.http.client.utils.URIBuilder
正如我所期望的那样编码,即:www.something.com?q=%7Bsome+thing%7D
我试过这样做:
...
.queryParam("q", UriComponent.encode(searchQuery, UriComponent.Type.QUERY_PARAM)).
.build();
但随后空格字符也被编码为www.something.com?q=%7Bsome%2Bthing%7D
.
我必须做什么才能得到www.something.com?q=%7Bsome+thing%7D
?