2016-11-14 6 views
0

Я пытаюсь вызвать службу OData с помощью Jersey2.Jersey2 Клиент: используйте зарезервированные символы без кодировки

Моя проблема заключается в том, что

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 закодированы?

ответ

0

я нашел некрасивое решение установки проблемных частей как URI к новому WebTarget:

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) 

лучших решения по-прежнему предпочитают