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

标签 java xml spring

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

我想将以下xml发送到url localhost:8080/xml/availability

<AvailReq>
  <hotelid>123</hotelid>
</AvailReq>

我还想在每个请求上动态添加自定义 http header (!)。

我如何使用 spring 实现这一点?

最佳答案

首先,定义你的HTTP标题,如下所示:

HttpHeaders headers = new HttpHeaders();
headers.add("header_name", "header_value");

您可以设置任何HTTP用这种方法 header 。对于众所周知的标题,您可以使用预定义的方法。例如,为了设置 Content-Type标题:

headers.setContentType(MediaType.APPLICATION_XML);

然后定义一个HttpEntityRequestEntity准备您的请求对象:

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);

我在这里 POST将请求发送到 http://localhost:8080/xml/availability端点和转换 HTTP响应正文为 String .

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

关于java - 如何使用 Spring RestTemplate 发送 XML POST 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35461148/

相关文章:

java - Tomcat 中的 mysql-connector 异常行为

java - Spring 中 Autowiring 特定的内部 bean

java - 对 android 编程,当我构建项目时,我的布局 xml 文件不会更新

php - SimpleXML 中用于默认 namespace 的 XPath,无需前缀

java - 在 Spring 中定义一个 "send-only"WebSocket 服务器

java - Log4j2 设置日志级别

java - 从 Arrays.asList 转换为 Array

java - JPA继承问题

java - Android XML 上的图像和 TextView 错误

java - 尝试在 JBoss EAP 6.3 上部署 spring ws + saaj webapp 时出现 ClassNotFoundException