2013-05-30 101 views
1

我遇到了一些web資源問題。我想將編碼參數傳遞給我的請求。 事情是,當我使用URLEncoder.encode時,它編碼了我的參數,但是當我執行請求時,球衣將再次編碼。Java Jersey Web資源編碼

如果我之前沒有編碼通過我的參數,球衣不會編碼它。

這很奇怪。任何解決方案

這裏我的一些代碼:

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 = 編碼PARAM:tvR1AwZ%2F4YrsCp0TKV3%2Fod%2BtHeMeB%2Fu8Y68cPpAEwoM%3D

PARAM在請求:tvR1AwZ%252F4YrsCp0TKV3%252Fod%252BtHeMeB%252Fu8Y68cPpAEwoM%253D

感謝

回答

2

當您發送parame ter作爲查詢參數,它遵循按照the specification編碼的規則。這些規則與編碼URL的規則不同,這就是您看到不同結果的原因。澤西島正在做正確的事情,你不應該編碼的參數,然後傳遞給queryParam()