我正在尝试向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);
感谢您的任何想法!
答案 0 :(得分:0)
是的,正如您所指出的那样,参数值中的额外参数导致了问题。谢谢!