我在使用网络资源时遇到了一些问题。我希望将编码后的参数传递给我的请求。问题是,当我使用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=已编码param : tvR1AwZ%2F4YrsCp0TKV3%2Fod%2BtHeMeB%2Fu8Y68cPpAEwoM%3D
请求中的param : tvR1AwZ%252F4YrsCp0TKV3%252Fod%252BtHeMeB%252Fu8Y68cPpAEwoM%253D
谢谢
发布于 2013-05-31 02:40:51
当您将参数作为查询参数发送时,它遵循按照the specification进行编码的规则。这些规则与URL编码规则不同,这就是为什么您会看到不同的结果。Jersey正在做正确的事情,您不应该在将参数传递给queryParam()之前对其进行编码
https://stackoverflow.com/questions/16833207
复制相似问题