Fondamentalement, j'ai passé un appel pour obtenir un jeton d'accès et j'ai obtenu "400 Bad Request" en utilisant RestTemplate.

Le même appel effectué via Postman peut réussir avec exactement les mêmes paramètres.

    private String getTokenString(@NonNull String code)
    {
    String tokenUrl = AZURE_BASE_URL + tenantId + "/oauth2/token";

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);
    headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
    headers.set("Authorization", "Bearer "+code);

    JSONObject request = new JSONObject();
    request.put("grant_type", "authorization_code");
    request.put("client_id", clientId);
    request.put("code", code);
    request.put("client_secret", password);
    request.put("redirect_uri", redirectUrl);

    HttpEntity<String> entity = new HttpEntity<>(request.toString(), headers);
    RestTemplate restTemplate = new RestTemplate();

    try {
        ResponseEntity<String> response = restTemplate.exchange(tokenUrl, HttpMethod.POST, entity, String.class);
        return response.getBody();
    } catch (Exception e)
    {
        e.printStackTrace();
    }

    return null;
}`

Je n'arrive pas à comprendre ce qui ne va pas avec ce code, après plusieurs tentatives pour le modifier. Ma stacktrace va comme.

org.springframework.web.client.HttpClientErrorException$BadRequest: 400 Bad Request
at org.springframework.web.client.HttpClientErrorException.create(HttpClientErrorException.java:79)
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:122)
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:102)
at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63)
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:778)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:736)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:670)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:579)
at com.xupes.stockmanagement.azure.controller.AzureController.getTokenString(AzureController.java:68)
at com.xupes.stockmanagement.azure.controller.AzureController.userInfo(AzureController.java:45)
at com.xupes.stockmanagement.azure.controller.AzureController$$FastClassBySpringCGLIB$$c7397a7.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:684)
at com.xupes.stockmanagement.azure.controller.AzureController$$EnhancerBySpringCGLIB$$1e02dbbe.userInfo(<generated>)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1039)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
0
Motolola 14 janv. 2020 à 14:48