Java Jersey Webresource编码

时间:2013-05-30 10:01:24

标签: java encoding jersey params webresource

我在使用网络资源时遇到了一些问题。我想将编码参数传递给我的请求。 事情就是当我使用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

由于

1 个答案:

答案 0 :(得分:2)

当您将参数作为查询参数发送时,它遵循按the specification编码的规则。这些规则与编码URL的规则不同,这就是您看到不同结果的原因。 Jersey正在做正确的事情,你不应该在将参数传递给queryParam()

之前对其进行编码