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
使用SpringRestTemplate发布数据_Spring_Resttemplate_Postdata - Fatal编程技术网

使用SpringRestTemplate发布数据

使用SpringRestTemplate发布数据,spring,resttemplate,postdata,Spring,Resttemplate,Postdata,我尝试使用Spring RestTemplate发布数据,如下所示: MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>(); parameters.add("name1", "value1"); parameters.add("name2", "value2"); HttpMessageConverter<String

我尝试使用Spring RestTemplate发布数据,如下所示:

    MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>();
    parameters.add("name1", "value1");
    parameters.add("name2", "value2");

    HttpMessageConverter<String> stringConverter = new StringHttpMessageConverter();
    FormHttpMessageConverter formConverter = new FormHttpMessageConverter();
    List<HttpMessageConverter<?>> msgConverters = new ArrayList<HttpMessageConverter<?>>();
    msgConverters.add(formConverter);
    msgConverters.add(stringConverter);
    restTemplate.setMessageConverters(msgConverters);

    String xml = restTemplate.postForObject(myurl, parameters, String.class);
服务器以字符串形式返回xml

当我使用HashMap而不是不带转换器的MultiValueMap时,服务器端的参数为null。但是在使用上面的代码之后,我得到了一个错误

Cannot extract response: no Content-Type found

你能给我一个简单的例子来实现我想要的吗。

以下是我用来格式化Spring POST数据的方法:

//FormHttpMessageConverter 
用于构造要发布到URI上的表单参数

HttpMessageConverter<?> formHttpMessageConverter = new FormHttpMessageConverter();
HttpMessageConverter<?> stringHttpMessageConverter = new StringHttpMessageConverter();
List<HttpMessageConverter> msgConverters = new ArrayList<HttpMessageConverter>();
msgConverters.add(formHttpMessageConverter);
msgConverters.add(stringHttpMessageConverter);

// Prepare acceptable media type
List<MediaType> acceptableMediaTypes = new ArrayList<MediaType>();
acceptableMediaTypes.add(MediaType.ALL);

// Prepare header
HttpHeaders headers = new HttpHeaders();
headers.setAccept(acceptableMediaTypes);
HttpEntity<MultiValueMap<String,String>> httpEntity = new HttpEntity<MultiValueMap<String,String>>(map,headers);
ResponseEntity<String> resp = restTemplate.exchange("https://risk.XXXX.XXXXXX.net",HttpMethod.POST,httpEntity,String.class);
HttpMessageConverter formHttpMessageConverter=newformhttpmessageconverter();
HttpMessageConverter stringHttpMessageConverter=新的stringHttpMessageConverter();
List msgConverters=new ArrayList();
添加(formHttpMessageConverter);
添加(stringHttpMessageConverter);
//准备可接受的介质类型
List acceptableMediaTypes=new ArrayList();
acceptableMediaTypes.add(MediaType.ALL);
//准备收割台
HttpHeaders=新的HttpHeaders();
headers.setAccept(acceptableMediaTypes);
HttpEntity HttpEntity=新的HttpEntity(映射,标题);
ResponseEntity resp=restTemplate.exchange(“https://risk.XXXX.XXXXXX.net,HttpMethod.POST,httpEntity,String.class);

好的,我找到了解决方案。我的问题是由于Spring 3.0.1似乎不支持HttpEntity,我使用Spring 3.2并将HttpHeaders与ContentType MediaType.APPLICATION\u FORM\u URLENCODED一起使用,并将头包装到HttpEntity对象以解决我的问题。
HttpMessageConverter<?> formHttpMessageConverter = new FormHttpMessageConverter();
HttpMessageConverter<?> stringHttpMessageConverter = new StringHttpMessageConverter();
List<HttpMessageConverter> msgConverters = new ArrayList<HttpMessageConverter>();
msgConverters.add(formHttpMessageConverter);
msgConverters.add(stringHttpMessageConverter);

// Prepare acceptable media type
List<MediaType> acceptableMediaTypes = new ArrayList<MediaType>();
acceptableMediaTypes.add(MediaType.ALL);

// Prepare header
HttpHeaders headers = new HttpHeaders();
headers.setAccept(acceptableMediaTypes);
HttpEntity<MultiValueMap<String,String>> httpEntity = new HttpEntity<MultiValueMap<String,String>>(map,headers);
ResponseEntity<String> resp = restTemplate.exchange("https://risk.XXXX.XXXXXX.net",HttpMethod.POST,httpEntity,String.class);