簡體   English   中英

獲得 400 錯誤的 Rest 模板 Spring Boot 請求

[英]Getting 400 Bad Request for Rest Template Spring Boot

我有一個 rest 控制器,我正在嘗試使用 Spring Boot 中的RestTemplate從服務中獲取令牌。 當我使用 Postman 時,應用程序工作正常,但從 Java 應用程序我得到400 Bad Request

我的 Java 示例:

@PostMapping("/service")
private String generateAuthenticationToken() {

    HttpHeaders authenticationTokenHeaders = new HttpHeaders();
    authenticationTokenHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);

    JSONObject sfmcBUCredential = new JSONObject();
    JSONObject sfmcTokenResponseObject;
    sfmcBUCredential.put("grant_type", sfmcConfig.getGrant_type());
    sfmcBUCredential.put("client_id", sfmcConfig.getClient_id());
    sfmcBUCredential.put("client_secret", sfmcConfig.getClient_secret());

    String sfmcBUCredentialString = sfmcBUCredential.toString();

    System.out.println("Values before sending to POST Request are :::" + sfmcBUCredentialString);

    HttpEntity<String> getTokenEntity = new HttpEntity<>(sfmcBUCredentialString, authenticationTokenHeaders);
    System.out.println("Values after sending to POST Request are :::" + getTokenEntity.toString());
    System.out.println("URL is :::" + GET_SFMC_ENDPOINT_URL);

    //String tokenResponse = restTemplate.postForObject(GET_SFMC_ENDPOINT_URL, getTokenEntity, String.class);
    ResponseEntity<String> tokenResponse = restTemplate.exchange(GET_SFMC_ENDPOINT_URL, HttpMethod.POST, getTokenEntity, String.class);

    sfmcTokenResponseObject = new JSONObject(tokenResponse.getBody());
    System.out.println("tokenResponse::::::::" + sfmcTokenResponseObject.getString("access_token").toString());
    return sfmcTokenResponseObject.getString("access_token");

}

日志:

Values before sending to POST Request are :::{"grant_type":"client_credentials","client_secret":"c1ae4b4a-498e-46a0-a02e-cd2378cb8db6","client_id":"Y43iLAhr4e0SoJ9KkV4vLKnGhNmS1Y3c"}
Values after sending to POST Request are :::<{"grant_type":"client_credentials","client_secret":"c1ae4b4a-498e-46a0-a02e-cd2378cb8db6","client_id":"Y43iLAhr4e0SoJ9KkV4vLKnGhNmS1Y3c"},[Content-Type:"application/x-www-form-urlencoded"]>
URL is :::https://keycloak.lab.hci.aetna.com/auth/realms/master/protocol/openid-connect/token

嘗試這樣的事情:

RestTemplate restTemplate = new RestTemplate();

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);

MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
map.add("grant_type", sfmcConfig.getGrant_type());
map.add("client_id", sfmcConfig.getClient_id());
map.add("client_secret", sfmcConfig.getClient_secret());

HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<>(map, headers);

ResponseEntity<LabelCreationResponse> response =
    restTemplate.exchange("url",
                          HttpMethod.POST,
                          entity,
                          String.class);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM