我有一个 Sprint Boot 2 应用程序,它使用 RestTemplate 为名为 ForgeRock 的第三方产品调用外部 Web 服务。它使用标头而不是正文来发送参数(不是我的想法)。尝试发布请求时,我不断收到错误 400。正文应该是空的,我尝试发送具有相同结果的 null 和“{}”。仅供参考,我的身份验证方法在调试时暂时返回 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;
}