Sono in difficoltà con RestTemplate. Ho bisogno di pubblicare alcune informazioni di autenticazione su un servizio web di resto. Posso inviare una richiesta e ottengo una risposta. Ma secondo la risposta, i miei parametri di intestazione non sono passati. (Invio la stessa richiesta con SoapUI funziona bene)Spring RestTemplate postForObject con intestazione: webservice non riesce a trovare i miei parametri di intestazione
Questo è il mio codice:
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
headers.add("companyId", companyId);
headers.add("password", password);
HttpEntity<String> request = new HttpEntity<String>(headers);
RestTemplate restTemplate = new RestTemplate();
List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
messageConverters.add(new MappingJacksonHttpMessageConverter());
restTemplate.setMessageConverters(messageConverters);
LoginResponse response = (LoginResponse)restTemplate.postForObject(url, request, LoginResponse.class);
Chi mi può dire cosa c'è di sbagliato con il mio HttpEntity o HttpHeader?
grazie.
risolto:
Ok, finalmente capito di lavoro.
MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();
map.add("companyId", companyId);
map.add("password", password);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(map, headers);
List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
messageConverters.add(new MappingJacksonHttpMessageConverter());
messageConverters.add(new FormHttpMessageConverter());
restTemplate.setMessageConverters(messageConverters);
LoginResponse response = (LoginResponse) restTemplate.postForObject(url, request, LoginResponse.class);
Perché ho anche avuto un momento difficile sulla risposta, forse può essere utile per gli altri:
@JsonIgnoreProperties(ignoreUnknown = true)
public class ItcLoginResponse {
public String loginToken;
@JsonProperty("token")
public String getLoginToken() {
return loginToken;
}
public void setLoginToken(String loginToken) {
this.loginToken = loginToken;
}
}
Aggiornamento: uso 'MappingJackson2HttpMessageConverter' al posto del vecchio 'MappingJacksonHttpMessageConverter' – Udo
Sembra che l'istanza messageConverters non sia utilizzata nella soluzione ?! –