Spring RestTemplate postForObject with Header:webservice 找不到我的标头参数



我在使用RestTemplate。我需要将一些身份验证信息发布到rest Web服务。我可以发送请求并得到回复。但是根据响应,我的头参数没有通过。(使用SOAPUI发送相同的请求效果良好)

这是我的代码:

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;
    }
}

您设置了一个标头,表示您正在发布表单(APPLICATION_form_URLENCODED),但随后将companyId和密码设置为HTTP标头。

我怀疑你希望这些字段出现在你的请求中。

您还创建了一个HttpEntity<String>,它表示您将发布一个包含String的请求体,但您提供的是头,但没有String。

如果这对你没有帮助,也许你可以解释一下请求应该是什么样子。

相关内容

最新更新