web-dev-qa-db-fra.com

Ajout d'en-têtes à la méthode postForObject () de RestTemplate au printemps

J'appelle le service Web en utilisant la méthode ci-dessous.

ResponseBean responseBean = getRestTemplate()
    .postForObject(url, customerBean, ResponseBean.class);

Maintenant, mon exigence a changé. Je veux envoyer 2 en-têtes avec la demande. Comment dois-je procéder?

Le bean client est une classe où contiennent toutes les données qui seront utilisées comme corps de requête.

Comment ajouter des en-têtes dans ce cas?

12
Sadashiv

Vous pouvez utiliser HttpEntity<T> pour votre but. Par exemple:

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); 
34
Mykola Yashchenko

Utilisez simplement le org.springframework.http.HttpHeaders pour créer vos en-têtes et ajouter CustomBean. Sth ressemble à:

 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>  

J'espère que cette aide.

6
Kenny Tai Huynh