У меня перед клиентом стоит проблема с Джерси, мне нужно передать какой-то фильтр даты в качестве параметра, он содержит «=>», а Джерси жалуется:Как заставить майку принять символ «>» в параметре запроса
Caused by: java.lang.IllegalArgumentException: Path segment is null
at com.sun.jersey.api.uri.UriBuilderImpl.appendPath(UriBuilderImpl.java:547)
сам запрос выглядит следующим образом:
CustomData dat = getWebResource()
.path(path)
.queryParam("display","full")
.queryParam("date","1")
.queryParam("filter[date_upd]",">[2016-01-08 10:32:00]")
.queryParam("filter[valid]","1")
.type(MediaType.APPLICATION_XML).get(CustomData.class);
После нескольких попыток я понял, что «>» является причиной проблемы (также пространство в дату неверно закодирован). Если я удалю его, Джерси в порядке, но веб-сервис не работает. Есть ли специальный способ передать параметры, которые имеют «=>» вместо «=»? Когда я попробовать URL непосредственно в браузере он работает:
http://www.xxxx.com/api/orders/?display=full&date=1&filter[date_upd]=>[2016-01-08%2010:32:00]&filter[valid]=1
если я построить URL с UriBuilder как таковой:
uri = UriBuilder.fromPath("http://www.xxxx.com/api/"+Order.URLORDER)
.queryParam("display","full")
.queryParam("date","1")
.queryParam("filter[date_upd]",">[2016-01-08 10:32:00]")
.queryParam("filter[valid]","1").build();
System.out.println(uri.toASCIIString());
//http://www.xxxx.com/api/orders/?display=full&date=1&filter%5Bdate_upd%5D=%3E%5B2016-01-08+10:32:00%5D&filter%5Bvalid%5D=1
И попробовать его в браузере он работает тоже, но если я использую URI в запросе, тогда запрос снова завершится. Проблема должна быть где-то в другом месте.
URI uri = UriBuilder.fromPath("http://www.xxxx.com/api/"+Order.URLORDER)
.queryParam("display","full")
.queryParam("date","1")
.queryParam("filter[date_upd]",">[2016-01-08 10:32:00]")
.queryParam("filter[valid]","1").build();
CustomData dat = getWebResource().uri(uri).type(MediaType.APPLICATION_XML).get(CustomData.class);
Любая идея?
также попытался
.queryParam("filter[date_upd]",URLEncoder.encode(">[2016-01-08 10:32:00]", "UTF-8"))
и
.queryParam("filter[date_upd]",URLEncoder.encode("%3E[2016-01-08 10:32:00]", "UTF-8"))
С той же «отрезке пути является нулевым» ошибка