0

I am trying to post data using Spring RestTemplate as below:

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

On the server part, I am using a simple servlet to handle request as follow:

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

The server returns the xml as String.

When I used HashMap instead of MultiValueMap without Converter, the parameters are null on the server side. But after using the above code, I am getting error

Cannot extract response: no Content-Type found

Can you plz provide me a simple example to achieve what I want.

BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
zdesam
  • 2,936
  • 3
  • 25
  • 32
  • Ok, I found the solution. My problem was due to Spring 3.0.1 which does not seem to support HttpEntity, I used Spring 3.2 and used HttpHeaders with ContentType MediaType.APPLICATION_FORM_URLENCODED and wrapped the headers to HttpEntity object to solve my problem. – zdesam Jan 16 '13 at 11:24

1 Answers1

0

Here is what I used to format data for the Spring POST:

//FormHttpMessageConverter 

is used to construct form parameters to POST on the 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);
Russia Must Remove Putin
  • 374,368
  • 89
  • 403
  • 331