我正在用RestTemplate挣扎。我需要将一些身份验证信息发布到其他Web服务。我可以发送请求并收到回复。但根据回应,我的标题参数没有通过。 (发送相同的请求与SOAPUI正常工作)Spring RestTemplate带有标题的postForObject:webservice找不到我的标题参数
这是我的代码:
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);
任何人谁可以告诉我,这有什么错我的HttpEntity或的HTTPHeader?
谢谢。
解决:
好吧,终于得到了它的工作。
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);
因为我也对响应很难,也许它可以对他人有用:
@JsonIgnoreProperties(ignoreUnknown = true)
public class ItcLoginResponse {
public String loginToken;
@JsonProperty("token")
public String getLoginToken() {
return loginToken;
}
public void setLoginToken(String loginToken) {
this.loginToken = loginToken;
}
}
更新:使用“MappingJackson2HttpMessageConverter”,而不是旧“MappingJacksonHttpMessageConverter” – Udo 2014-10-16 03:23:26
它看起来像你的解决方案中的messageConverters实例未使用?! – 2017-04-27 06:20:20