I'm using XStream instead of Jaxb to do the conversion. Everythings works fine with GET methods, but I receive awhen trying to work with POST.Code:org.springframework.web.client.HttpClientErrorException: 415 Unsupported Media Type
Simple pojos to use in the request / response is "Order" and "Bundle".
Client Config:
applicationContextXML
Client:Code:<bean id="httpClient" class="org.apache.commons.httpclient.HttpClient"> <constructor-arg ref="httpClientParams" /> </bean> <bean id="httpClientFactory" class="org.springframework.http.client.CommonsClientHttpRequestFactory"> <constructor-arg ref="httpClient" /> </bean> <bean id="restTemplate" class="org.springframework.web.client.RestTemplate"> <constructor-arg ref="httpClientFactory" /> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter"> <property name="marshaller"> <bean class="org.springframework.oxm.xstream.XStreamMarshaller"> <property name="autodetectAnnotations" value="true" /> </bean> </property> <property name="unmarshaller"> <bean class="org.springframework.oxm.xstream.XStreamMarshaller"> <property name="autodetectAnnotations" value="true" /> </bean> </property> </bean> <bean class="org.springframework.http.converter.FormHttpMessageConverter" /> </list> </property> </bean>
Server:Code:private final RestTemplate restTemplate; public RestClientImpl(RestTemplate restTemplate) { this.restTemplate = restTemplate; } public Order submitOrder(Order order) { return restTemplate.postForObject(submitOrderUrl, order, Order.class); }
applicationContext.xml
Server Code:Code:<bean id="marshaller" class="org.springframework.oxm.xstream.XStreamMarshaller"> <property name="autodetectAnnotations" value="true" /> </bean> <bean id="xmlView" class="org.springframework.web.servlet.view.xml.MarshallingView"> <constructor-arg ref="marshaller" /> </bean> <bean id="converter" class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter"> <constructor-arg ref="marshaller" /> </bean> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="converter" /> </list> </property> </bean>
Code:@RequestMapping(value = "/test/order", method = RequestMethod.POST) public ModelAndView submitOrder(@RequestBody Order order) { Order submittedOrder = someService.submitOrder(order); ModelAndView mav = new ModelAndView("xmlView", BindingResult.MODEL_KEY_PREFIX + "order", submittedOrder); return mav; }


Reply With Quote
