如何使用Spring RestTemplate发送XML POST请求?

是否可以使用spring发送XML POST请求,例如RestTemplate?

我想将以下xml发送到url 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对应的POJO.最后使用postFor …方法发送请求:

ResponseEntity<String> response = restTemplate.postForEntity("http://localhost:8080/xml/availability", request, String.class);

在这里,我将请求发布到http:// localhost:8080 / xml / availability端点,并将HTTP响应主体转换为String.

注意,在上面的例子中,新的HttpEntity< String>(…)可以使用JDK7及更高版本be replaced with新的HttpEntity<>(…).

转载注明原文:如何使用Spring RestTemplate发送XML POST请求? - 代码日志