2013-05-30 2 views
1

У меня возникли проблемы с webresource. Я хочу передать закодированный параметр в свой запрос. Дело в том, что когда я использую URLEncoder.encode, он хорошо кодировал мой параметр, но когда я выполняю запрос, трикотаж снова закодирует его.Java Jersey Webresource encoding

Если я передам свой параметр без кодирования раньше, Джерси не будет кодировать его.

Это странно. Любые решения?

здесь некоторые из моего кода:

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/оды + tHeMeB/u8Y68cPpAEwoM = кодируются пары: tvR1AwZ% 2F4YrsCp0TKV3% 2Fod% 2BtHeMeB% 2Fu8Y68cPpAEwoM% 3D

пары в запросе: tvR1AwZ% 252F4YrsCp0TKV3% 252Fod% 252BtHeMeB% 252Fu8Y68cPpAEwoM% 253d

Благодарности

ответ

2

при отправке параме ter как параметр запроса, он следует правилам кодирования согласно the specification. Эти правила отличаются от правил кодирования URL-адресов, поэтому вы видите разные результаты. Джерси делает правильную вещь, и вы не должны кодировать параметр до передачи его queryParam()