Кодировка веб-ресурса Java-джерси
У меня проблемы с веб-ресурсом. Я хочу передать закодированный параметр в мой запрос. Дело в том, что когда я использую URLEncoder.encode, он хорошо кодирует мой параметр, но когда я выполняю запрос, трикотаж закодирует его снова.
Если я передам свой параметр без кодирования раньше, Джерси не будет его кодировать.
Это странно Какие-либо решения?
вот некоторые из моего кода:
WebResource webResource = this.resource(this.myURL, login, password);
webResource.addFilter(new com.sun.jersey.api.client.filter.LoggingFilter());
String paramEncoded = URLEncoder.encode(param);
try {
certificateTool.disableSslChecks();
userInfosAccessRights = webResource.path("getInfos").
queryParam("id", paramEncoded).
get(MyClass.class);
} catch (UniformInterfaceException exc) {
параметр: tvR1AwZ/4YrsCp0TKV3/od+tHeMeB/u8Y68cPpAEwoM= закодированный параметр: tvR1AwZ%2F4YrsCp0TKV3%2Fod%2BtHeMeB%2Fu8Y68cPAW
параметр в запросе: tvR1AwZ%252F4YrsCp0TKV3%252Fod%252BtHeMeB%252Fu8Y68cPpAEwoM%253D
Спасибо
1 ответ
Когда вы отправляете параметр как параметр запроса, он следует правилам кодирования согласно спецификации. Эти правила отличаются от правил для кодирования URL, поэтому вы видите разные результаты. Джерси делает правильные вещи, и вы не должны кодировать параметр перед передачей его queryParam()