泽西编码的查询参数,但休息服务不希望它编码

时间:2015-06-08 09:44:55

标签: java rest oauth-2.0 jersey onedrive

我正在尝试向microsoft发出一个休息请求,但是我需要使用的一些查询参数是由jersey编码的,这导致它们在被其余服务解释时出错。

例如,

static String authorizationcode = "M2a34718e-5a3e-f8a1-4edb-d55adaf9aac9&lc=1033";

如果此授权代码已编码,则其余调用将失败。这是我的代码。我没有看到任何明显的方法来解决这个问题。客户端秘密也存在问题,因为它可能包含一个似乎被编码为" +"在被发送之前。

    WebResource webResource = client.resource(OneDriveEnum.OAUTH20_TOKEN_URL.toString());
    MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl();

    queryParams.add(API_PARAM_CLIENT_ID, principal.getClientId());
    queryParams.add(API_PARAM_CLIENT_SECRET, principal.getClientSecret());
    queryParams.add(API_PARAM_CODE, principal.getAuthorizationCode());
    queryParams.add(API_PARAM_REDIRECT_URI, OneDriveEnum.OAUTH20_DESKTOP_REDIRECT_URL.toString());
    queryParams.add(API_PARAM_GRANT_TYPE, OneDriveEnum.GRANT_TYPE_AUTHORIZATION_CODE.toString());

    Builder b = webResource.queryParams(queryParams).accept(MediaType.APPLICATION_JSON);

    ClientResponse clientResponse = b.get(ClientResponse.class);

感谢您的任何想法!

1 个答案:

答案 0 :(得分:0)

是的,正如您所指出的那样,参数值中的额外参数导致了问题。谢谢!