在Spring中向RestTemplate的postForObject()方法添加标头

Sad*_*hiv 12 rest spring web-services restful-authentication

我使用以下方法调用Web服务.

ResponseBean responseBean = getRestTemplate()
    .postForObject(url, customerBean, ResponseBean.class);
Run Code Online (Sandbox Code Playgroud)

现在我的要求发生了变化.我想发送带有请求的2个标头.我该怎么办?

Customer bean是一个类,其中包含将用作请求主体的所有数据.

在这种情况下如何添加标题?

Myk*_*nko 35

您可以将它HttpEntity<T>用于您的目的.例如:

CustomerBean customerBean = new CustomerBean();
// ...

HttpHeaders headers = new HttpHeaders();
headers.set("headername", "headervalue");      

HttpEntity<CustomerBean> request = new HttpEntity<>(customerBean, headers);

ResponseBean response = restTemplate.postForObject(url, request, ResponseBean.class); 
Run Code Online (Sandbox Code Playgroud)


Ken*_*ynh 6

只需使用它org.springframework.http.HttpHeaders来创建标题并添加CustomBean.......看起来像:

 CustomerBean customerBean = new CustomerBean();
 HttpHeaders headers = new HttpHeaders();

// can set the content Type
headers.setContentType(MediaType.APPLICATION_JSON);

//Can add token for the authorization
headers.add(HttpHeaders.AUTHORIZATION, "Token");

headers.add("headerINfo", "data");

//put your customBean to header
HttpEntity< CustomerBean > entity = new HttpEntity<>(customBean, headers);
//can post and get the ResponseBean 
restTemplate.postForObject(url, entity, ResponseBean.class);
//Or return the ResponseEntity<T>  
Run Code Online (Sandbox Code Playgroud)

希望这有帮助.