我在使用网络资源时遇到了一些问题。我想将编码参数传递给我的请求。 事情就是当我使用URLEncoder.encode时,它很好地编码了我的参数,但是当我执行请求时,jersey会再次编码。
如果我之前未通过编码传递我的参数,则jersey不会对其进行编码。
这很奇怪。任何解决方案?
这里是我的一些代码:
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) {
param是:tvR1AwZ / 4YrsCp0TKV3 / od + tHeMeB / u8Y68cPpAEwoM = 编码参数:tvR1AwZ%2F4YrsCp0TKV3%2Fod%2BtHeMeB%2Fu8Y68cPpAEwoM%3D
请求中的参数:tvR1AwZ%252F4YrsCp0TKV3%252Fod%252BtHeMeB%252Fu8Y68cPpAEwoM%253D
由于
答案 0 :(得分:2)
当您将参数作为查询参数发送时,它遵循按the specification编码的规则。这些规则与编码URL的规则不同,这就是您看到不同结果的原因。 Jersey正在做正确的事情,你不应该在将参数传递给queryParam()