1

Web リソースに問題があります。エンコードされたパラメーターをリクエストに渡したいです。URLEncoder.encode を使用すると、パラメータが適切にエンコードされますが、リクエスト ジャージーを実行すると、再度エンコードされます。

前にエンコードせずにパラメーターを渡すと、ジャージーはそれをエンコードしません。

これは奇妙です。解決策はありますか?

ここに私のコードのいくつか:

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 に答える