Проблема с кодировкой URL в Jersey Client
Мне нужно позвонить в службу поддержки, например: http://myservice.com/path?var1=value1&var2=value2
У меня проблема в том, что value1 и value2 заканчивают тем, что закодированы, и это заставляет вызов службы потерпеть неудачу. Например, value1 - это что-то вроде "a=b&b=c;2&&="... в основном, оно содержит специальные символы.
Я предполагаю, что это проблема для службы, чтобы исправить - правильно обрабатывать декодирование закодированных символов, что я не думаю, что это в настоящее время делает.
Вот пример того, как я делаю эти запросы:
WebTarget target = client.target("http://test.com")
.path("path1")
.queryParam("var1", var1);
Builder builder = target.request();
...
Что меня озадачивает, так это то, что если я делаю один и тот же запрос, просто используя Chrome, все работает. Так что это заставляет меня поверить, что я должен иметь некоторый способ с API Джерси "отключить" кодировку.
1 ответ
До сих пор я нашел единственный способ использовать "сырой" URL-адрес - использовать URI. Так звони вот так
URI uri = URI.create("http://localhost/~Common~0#/edit?vadf&&sfs&&fdsfd=fs&fsd");
WebTarget target = client.target(uri);
Вы получаете запрос URL
1 > GET http://localhost/~Common~0#/edit?vadf&&sfs&&fdsfd=fs&fsd
Все остальное, что я пробовал, привело к кодированию специальных символов.