HttpClientOxmTemplate
which uses Apache's HttpClient to process HTTP requests
and Spring Web Service's OXM to marshall and unmarshall the requests.
Define a marshaller/unmarshaller and set it on HttpClientOxmTemplate
along with it's default URI.
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> <property name="contextPath" value="org.springbyexample.schema.beans"/> </bean> <bean id="httpClient" class="org.springbyexample.httpclient.HttpClientOxmTemplate"> <property name="defaultUri"> <value>http://localhost:8093/test</value> </property> <property name="marshaller" ref="jaxbMarshaller" /> <property name="unmarshaller" ref="jaxbMarshaller" /> </bean> </beans>
Example 9. Excerpt from HttpClientOxmTemplateTest.testStringDataPostMethodWithStringResponse()
The instance of Persons is marshalled and the XML is posted to the default uri and the callback has
the XML result unmarshalled back to an instance of Persons
. The class passed in and returned
in this example match, but they don't need to since a different marshaller and unmarshaller can be used.
template.executePostMethod(persons, new ResponseCallback<Persons>() { public void doWithResponse(Persons persons) throws IOException { ... Person result = persons.getPerson().get(0); ... logger.debug("id={} firstName={} lastName={}", new Object[] { result.getId(), result.getFirstName(), result.getLastName()}); } });