Spring RestTemplate postForObject with Header: webservice can't find my header parameters
我正在为RestTemplate苦苦挣扎。我需要将一些身份验证信息发布到其余的Web服务。我可以发送请求,并且得到响应。但是根据响应,我的头参数没有通过。 (使用SOAPUI发送相同的请求可以正常工作)
这是我的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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出了什么问题?
谢谢。
已解决:
好,终于可以了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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); |
因为我也很难回答,也许对其他人可能有用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
您正在设置标头,指示要发布表单(APPLICATION_FORM_URLENCODED),但随后将companyId和password设置为HTTP标头。
我怀疑您希望这些字段出现在请求的正文中。
您还将创建一个
如果这不能帮助您解决问题,则可以解释该请求的外观。