resttemplate by spring, предоставленный для преобразования вашего объекта java в желаемый результат (html string, xml, json и т. Д.) Во время вызова службы по сети, а также, чтобы полученный ответ от службы был отменен обратно на объект java или желаемый тип данных.
<property name="messageConverters">
<util:list>
<bean id="jsonMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
<bean id="formMessageConverter" class="org.springframework.http.converter.FormHttpMessageConverter"/>
<bean id="messageConverter"
class="org.springframework.http.converter.StringHttpMessageConverter" />
</util:list>
//marhsaller and unmarshaller
<bean class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
<property name="marshaller" ref="jaxbMarshaller"></property>
<property name="unmarshaller" ref="jaxbMarshaller"></property>
<property name="supportedMediaTypes">
<list>
<value>application/xml</value>
<value>text/xml</value>
<value>json</value>
</list>
</property>
через выше конфигурации resttemplate будет использовать эти соответствующие преобразователи для обработки различных типов данных, как я сказал, что это может быть HTML, JSON или приложение XML
все, что мы делаем это, с вне написав java-код, мы настраиваем resttemplate и будем в весеннем контексте, эта настройка применяется там, где когда-либо использовался ваш resttemplate.
У меня есть пример здесь
скажем мы вызываем службу для проверки пользователь является действительным пользователем или не
class User{
string userId;
string password;
}
и служба ответа с некоторым кодом, как 1 является действительным и 0 недействительными
class ValidUser{
int validCode;
}
сначала вам нужно Маршалл в любой из допустимых типов данных, давайте приложение/XML
все, что я делаю здесь, через конфигурационный файл
к описанной выше конфигурации я добавление JAXB маршаллер и unmarshaller (смотри выше конфигурации)
я настроил как маршаллер и unmarshaller, и я говорю допустимые типы данных, которые оба должны использовать в то время как сортировочные и демаршаллизации
и, наконец, ниже конфигурация указует объекты Java, которые являются приемлемыми в ходе сортировочных (request.user будет преобразован в XML) и демаршаллизаций (XML, чтобы преобразовать обратно в response.validUser)
<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>
<value>com.request.user</value>
<value>com.response.validUser</value>
</list>
</property>
</bean>
здесь приходит код Java
здесь вы непосредственно передать свой объект Java, и ваш resttemplate будет маршалом это без каких-либо хлопот !!!
User user = new User();
user.setName('test');
user.setPassword('password');
// setting media type as xml, and telling convert my user java obj to xml
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_XML);
HttpEntity<User> entity = new HttpEntity<User> (user , headers);
ResponseEntity<validUser> responseEntity = rest.exchange(URL, HttpMethod.POST, entity, validUser.class);
// let us assume that service response for valid user <validCode>1<validCode>
//then validuserreponse obj will have code as 1, let us say valid user.
ValidUser validUserResponse = responseEntity.getBody();
как мудрые вы можете также обрабатывать простой HTML текст
headers.setContentType(MediaType.TEXT_HTML);
HttpEntity<String> entity = new HttpEntity<String>(htmlString, headers);
ResponseEntity<String> htmlStringresponse = rest.postForEntity(URL, entity, String.class);
, если вы видите, приведенный выше код Java, не имеет какой-либо конвертер сообщения кода, маршаллер и unmarshaller логики, все сделано в один лайнере с использование пружинной конфигурации.
Пройдите [Документацию по весне IoC] (http://docs.spring.io/spring/docs/3.2.4.RELEASE/spring-framework-reference/html/beans.html). Затем прочитайте javadoc для ['RestTemplate'] (http://docs.spring.io/spring/docs/3.2.x/javadoc-api/org/springframework/web/client/RestTemplate.html). –