如何使用Spring RestTemplate发送XML POST请求?
是否可以使用 发送请求,例如?XML
POST
spring
RestTemplate
我想将以下 xml 发送到网址localhost:8080/xml/availability
<AvailReq>
<hotelid>123</hotelid>
</AvailReq>
我还想在每个请求上动态添加自定义http标头(!)。
我怎样才能用春天做到这一点?
是否可以使用 发送请求,例如?XML
POST
spring
RestTemplate
我想将以下 xml 发送到网址localhost:8080/xml/availability
<AvailReq>
<hotelid>123</hotelid>
</AvailReq>
我还想在每个请求上动态添加自定义http标头(!)。
我怎样才能用春天做到这一点?
首先,定义标头,如下所示: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>
XML
postFor...
ResponseEntity<String> response = restTemplate.postForEntity("http://localhost:8080/xml/availability", request, String.class);
在这里,我将请求发送到端点,并将响应正文转换为.POST
http://localhost:8080/xml/availability
HTTP
String
请注意,在上面的示例中,可以使用 JDK7 及更高版本进行替换。new HttpEntity<String>(...)
new HttpEntity<>(...)
例如,在下面查找,以使用 RestTemplate 将 XML 交换为字符串并接收响应:
String xmlString = "<?xml version=\"1.0\" encoding=\"utf-8\"?><AvailReq><hotelid>123</hotelid></AvailReq>";
RestTemplate restTemplate = new RestTemplate();
//Create a list for the message converters
List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
//Add the String Message converter
messageConverters.add(new StringHttpMessageConverter());
//Add the message converters to the restTemplate
restTemplate.setMessageConverters(messageConverters);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_XML);
HttpEntity<String> request = new HttpEntity<String>(xmlString, headers);
final ResponseEntity<String> response = restTemplate.postForEntity("http://localhost:8080/xml/availability", request, String.class);