Прежде всего, определите ваши HTTP
заголовки, как следующее:
HttpHeaders headers = new HttpHeaders();
headers.add("header_name", "header_value");
Вы можете установить любой HTTP
заголовок с таким подходом. Для известных заголовков вы можете использовать заранее определенные методы. Например, для того, чтобы установить Content-Type
заголовок:
headers.setContentType(MediaType.APPLICATION_XML);
Затем определяют HttpEntity
или RequestEntity
подготовить объект запроса:
HttpEntity<String> request = new HttpEntity<String>(body, headers);
Если вы каким-то образом получить доступ к XML
строки, вы можете использовать HttpEntity<String>
, В противном случае вы можете определить POJO, соответствующий этому XML
. и, наконец, отправить запрос, используя postFor...
методы:
ResponseEntity<String> response = restTemplate.postForEntity("http://localhost:8080/xml/availability", request, String.class);
Здесь я POST
ИНГ запрос на http://localhost:8080/xml/availability
конечной точки и преобразовывая тело HTTP
ответа в String
.
Обратите внимание, что в приведенных выше примерах new HttpEntity<String>(...)
может be replaced withnew HttpEntity<>(...)
с использованием JDK7 и более поздних версий.
OK Я вижу, спасибо. У меня есть автогенерированные классы 'JAXB' из' XSD'. Как я мог затем позволить 'RestTemplate' конвертировать эти, если исходящий должен быть' application/xml', а ответ - text/html', но все просто xml. – membersound
Используйте свой класс 'JAXB', например' SomeClass', вместо 'String'. На самом деле это будет 'HttpEntity request = ...'. –
'Jaxb2RootElementHttpMessageConverter' преобразует ваш класс' JAXB' в 'XML'. Он должен быть зарегистрирован по умолчанию. Если по какой-то причине он не был зарегистрирован, зарегистрируйте его вручную. –