如何为RestTemplate调用SOAP服务端点

时间:2019-01-30 17:07:32

标签: spring rest soap

这是我第一次使用SOAP并与spring一起工作。但是问题很多。不知道它的有效问题不是我的要求。

所以我在SOAP点上使用了xml作为输入。该服务运行良好。 现在,我尝试调用服务方法,类似于下面的代码。

HttpHeaders header = new HttpHeaders();
        header.set(HttpHeaders.CONTENT_TYPE, "application/saop+xml");
        Resource resource = new ClassPathResource("soap/valid-req.xml");
        String xml = IOUtils.toString(resource.getInputStream(), "UTF-8");

        HttpEntity entity = new HttpEntity<>(xml, header);
        String response = restTemplate.postForObject("http://localhost:8080/ws/HttpImport", entity, String.class);

是否可以使用spring Rest Template调用SOAP服务,或者我们有其他替代方法吗?

有人可以帮忙吗?

先谢谢了。

1 个答案:

答案 0 :(得分:0)

尝试此代码

HttpHeaders header = new HttpHeaders();
header.setContentType(MediaType.TEXT_XML);
Resource resource = new ClassPathResource("soap/valid-req.xml");
String xml = IOUtils.toString(resource.getInputStream(), "UTF-8");
HttpEntity entity = new HttpEntity<>(xml, header);
ResponseEntity<String> response = restTemplate.exchange("http://localhost:8080/ws/HttpImport", HttpMethod.POST, entity, String.class);
String responseString =response.getBody();