RestTemplate 自定义 headers
RestTemplate custom headers
我有一个 Sprint Boot 2 应用程序,它使用 RestTemplate 为名为 ForgeRock 的 third-party 产品调用外部 Web 服务。它使用 headers 来发送参数(不是我的想法)而不是 body。我在尝试 POST 请求时不断收到错误 400。 body 应该为空,我尝试发送 null 和“{}”,结果相同。仅供参考,我的身份验证方法 returns 现在在调试时为 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;
}
我只收到 400 Bad Request,我认为这是 JSON 的问题。但是,我发现根本错误实际上来自 ForgeRock,我没有发送 FQDN(我发送的是 IP)。因此,如果向 FQDN 发送代码,代码将按原样工作。
我有一个 Sprint Boot 2 应用程序,它使用 RestTemplate 为名为 ForgeRock 的 third-party 产品调用外部 Web 服务。它使用 headers 来发送参数(不是我的想法)而不是 body。我在尝试 POST 请求时不断收到错误 400。 body 应该为空,我尝试发送 null 和“{}”,结果相同。仅供参考,我的身份验证方法 returns 现在在调试时为 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;
}
我只收到 400 Bad Request,我认为这是 JSON 的问题。但是,我发现根本错误实际上来自 ForgeRock,我没有发送 FQDN(我发送的是 IP)。因此,如果向 FQDN 发送代码,代码将按原样工作。