Mam problemy z RestTemplate. Muszę POST niektóre informacje uwierzytelniające do odpoczynku w serwisie internetowym. Mogę wysłać prośbę i otrzymam odpowiedź. Ale zgodnie z odpowiedzią parametry mojego nagłówka nie są przekazywane. (Wysyłanie tego samego wniosku z SoapUI działa poprawnie)Spring RestTemplate postForObject z nagłówkiem: usługa internetowa nie może znaleźć moich parametrów nagłówka
To jest mój kod:
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);
Kto może mi powiedzieć co jest nie tak z moim HttpEntity lub HttpHeader?
dziękuję.
rozwiązany:
Ok, wreszcie dostał pracę.
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);
Ponieważ miałem także trudny czas na odpowiedź, może to być przydatne dla innych:
@JsonIgnoreProperties(ignoreUnknown = true)
public class ItcLoginResponse {
public String loginToken;
@JsonProperty("token")
public String getLoginToken() {
return loginToken;
}
public void setLoginToken(String loginToken) {
this.loginToken = loginToken;
}
}
UPDATE: use 'MappingJackson2HttpMessageConverter' zamiast starego 'MappingJacksonHttpMessageConverter' – Udo
Wygląda na to, że wystąpienie messageConverters jest nieużywane w twoim rozwiązaniu?! –