Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring RestTemplate postForObject,标题为:webservice can';找不到我的标题参数_Java_Spring_Resttemplate - Fatal编程技术网

Java Spring RestTemplate postForObject,标题为:webservice can';找不到我的标题参数

Java Spring RestTemplate postForObject,标题为:webservice can';找不到我的标题参数,java,spring,resttemplate,Java,Spring,Resttemplate,我正在与RestTemplate作斗争。我需要将一些身份验证信息发布到rest Web服务。我可以发送请求并得到响应。但是根据回复,我的标题参数没有通过。(使用SOAPUI发送相同的请求可以正常工作) 这是我的代码: HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); headers.add("companyId", companyId);

我正在与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);

您正在设置一个标题,指示您正在发布一个表单(APPLICATION\u form\u URLENCODED),但随后将companyId和password设置为HTTP标题

我怀疑您希望这些字段包含在请求的正文中

您还将创建一个
HttpEntity
,它指示您将发布一个包含字符串的请求主体,但您提供的是头,而不是字符串


如果这不能帮助您解决问题,也许您可以解释请求应该是什么样子。

更新:使用“MappingJackson2HttpMessageConverter”而不是旧的“MappingJacksonHttpMessageConverter”,看起来messageConverters实例在您的解决方案中没有使用?!
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;
    }
}