Jersey2客户端:使用不带编码的保留字符

时间:2016-11-14 12:24:39

标签: odata jersey-2.0 url-encoding jersey-client

我正在尝试使用Jersey2调用OData服务。

我的问题是

final WebTarget target = JerseyClientBuilder.newClient().target("http://some.endpoint.url/odata/v1").path("MyEntity").queryParam("$top", 100);

生成为

http://some.endpoint.url/odata/v1/MyEntity?%24top=100

而不是

http://some.endpoint.url/odata/v1/MyEntity?$top=100

如何使用不能进行url编码的保留字符设置查询参数?

1 个答案:

答案 0 :(得分:0)

我发现了一个丑陋的解决方案,将有问题的部分设置为新的 WebTarget 的URI:

final Client client = JerseyClientBuilder.newClient()
WebTarget target = client.target("http://some.endpoint.url/odata/v1").path("MyEntity");
target = client.target(target.getUriBuilder().uri(target.getUri() + "?$top=100"));
JsonNode response = target.request(MediaType.APPLICATION_JSON_TYPE).buildGet().invoke(JsonNode.class)

更好的解决方案仍然是首选