1

我在使用网络资源时遇到了一些问题。我想将编码参数传递给我的请求。问题是当我使用 URLEncoder.encode 时,它​​对我的​​参数进行了很好的编码,但是当我执行请求时,球衣会再次对其进行编码。

如果我之前没有编码就传递了我的参数,则 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) {

参数是:tvR1AwZ/4YrsCp0TKV3/od+tHeMeB/u8Y68cPpAEwoM= 编码参数:tvR1AwZ%2F4YrsCp0TKV3%2Fod%2BtHeMeB%2Fu8Y68cPpAEwoM%3D

请求中的参数:tvR1AwZ%252F4YrsCp0TKV3%252Fod%252BtHeMeB%252Fu8Y68cPpAEwoM%253D

谢谢

4

1 回答 1

2

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

于 2013-05-30T18:40:51.097 回答