![](/img/trans.png)
[英]HttpClientErrorException on restTemplate.getForObject
[英]How to make restTemplate.getForObject call for Mediatypes Rest endpoint
我有一个像这样的 Java 端点
@RequestMapping(method = RequestMethod.GET, value = "/{test}", produces = "application/app+json;version=1")
public ResponseEntity<List<Entity>> getEntity(@PathVariable Long test) {
return ........
}
现在我通过 URIBuilder 使用 restTempate 调用这个 rest 端点
String url = UriComponentsBuilder.fromHttpUrl(this.URL)
.path(API_URL)
.path("/{test}")
.buildAndExpand(test).toString(); //How to add Headers??
return Arrays.asList(restTemplate.getForObject(url, Entity[].class));
我正在尝试在 rest 端点调用上添加 header,但不确定添加它的正确位置。 或者还有其他正确的方法吗? 请建议
无法通过调用getForObject
方法发送自定义标头。 相反,您可以使用exchange
方法。
代码将是这样的:
HttpHeaders headers = new HttpHeaders();
headers.add("HEADER", "VALUE");
HttpEntity<String> entity = new HttpEntity<>(null, headers);
restTemplate.exchange(url, HttpMethod.GET, entity, Entity[].class);
RestTemplate.getForObject()
方法不支持设置标题。 解决方案是使用RestTemplate.exchange()
方法。
您可以添加标题:
String url = UriComponentsBuilder.fromHttpUrl(this.URL)
.path(API_URL)
.path("/{test}")
.buildAndExpand(test).toString();
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.set("header-key", "header-value");
...
HttpEntity<String> httpEntity = new HttpEntity<>(null, httpHeaders);
ResponseEntity<Entity[]> response = restTemplate.exchange(
url, HttpMethod.GET, httpEntity, Entity[].class);
return Arrays.asList(response);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.