0

我正在尝试使用 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);

在服务器部分,我使用一个简单的 servlet 来处理请求,如下所示:

String name1 = request.getParameter("name1");

服务器将 xml 作为字符串返回。

当我在没有转换器的情况下使用 HashMap 而不是 MultiValueMap 时,服务器端的参数为空。但是使用上面的代码后,我得到了错误

Cannot extract response: no Content-Type found

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

4

1 回答 1

0

这是我用来为 Spring POST 格式化数据的内容:

//FormHttpMessageConverter 

用于构造表单参数以在 URI 上进行 POST

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);
于 2014-03-24T22:04:20.203 回答