RestTemplate自定义标题

时间:2018-07-10 12:08:37

标签: rest spring-boot resttemplate forgerock

我有一个Sprint Boot 2应用程序,该应用程序使用RestTemplate调用名为ForgeRock的第三方产品的外部Web服务。它使用标题发送参数(不是我的主意)而不是正文。尝试发布请求时,我始终收到错误400。该正文应为空,我尝试发送null和“ {}”,结果相同。仅供参考,调试时,我的authenticate方法现在返回null。

@PostMapping
public String authenticate(@RequestBody User user) {
  RestTemplate restTemplate = new RestTemplate();
  try {
      HttpHeaders headers = createHttpHeaders(user.getUsername(), user.getPassword());
      HttpEntity<String> entity = new HttpEntity<>(null, headers);

      ResponseEntity<String> responseEntity = restTemplate.exchange(authenticateUrl, HttpMethod.POST, entity, String.class);
      System.out.println("RESPONSE: " + responseEntity.getBody());
  } catch (Exception ex) {
      ex.printStackTrace();
  }
  return null;
}


private HttpHeaders createHttpHeaders(String user, String password) {
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);
    headers.add("X-OpenAM-Username", user);
    headers.add("X-OpenAM-Password", password);
    headers.add("Accept-API-Version", "resource=1.1");
    return headers;
}

1 个答案:

答案 0 :(得分:0)

我只收到400错误请求,这意味着JSON有问题。但是,我发现根本的错误实际上是来自ForgeRock,我没有发送FQDN(我正在发送IP)。因此,如果发送FQDN,则代码按原样工作。