专栏首页别先生基于Springboot整合RestTemplate调用Webservice接口

基于Springboot整合RestTemplate调用Webservice接口

1、基于Springboot整合RestTemplate调用Webservice接口,如果感觉使用webservice客户端调用服务器端不会,或者不方便 的时候,可以尝试使用RestTemplate来调用Webservice接口。

  首先,需要做的就是要获取到请求webservice服务器端的xml文件,此时,需要根据wsdl生成请求webservice服务器端的xml文件,可以使用SoapUi这个文件来操作,点击File -> New SOAP Project,来创建一个工程。

然后导入wsdl文件,起个工程名称,这个时候,导入成功之后,就可以看到要请求的xml格式了。

此时,就可以看到要请求的xml,如果有需要进行验证的参数封装到请求头里面soapenv:Header。

将需要验证的参数封装到请求头里面,如下所示:

2、当你拿到要请求的参数的时候,此时,我想使用resttemplate,还是其他请求http的工具,你都可以进行服务调用的吧,关键点,就是你拼装请求参数,就可以了。

 1 @Override
 2 public String getXxxRest(UserInfo userInfo) {
 3     // 创建一个请求头对象
 4     HttpHeaders headers = new HttpHeaders();
 5     MediaType type = MediaType.parseMediaType("text/xml;charset=UTF-8");
 6     // 设置请求头对象contentTyp的为text/xml;charset=UTF-8
 7     headers.setContentType(type);
 8 
 9 
10     String username = userInfo.getUsername();
11     String password = userInfo.getPassword();
12     String inputXml = userInfo.getinputXml();
13     
14     // 将请求参数进行封装并进行远程接口服务调用
15     // 构造webservice请求参数
16     StringBuffer soapRequestData = new StringBuffer("");
17     soapRequestData.append(
18             "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:web=\"http://webservice.tongtech.com/\">");
19     soapRequestData.append("<soapenv:Header>");
20     soapRequestData.append("<tongtechheader>");
21     soapRequestData.append("<id>");
22     soapRequestData.append(userInfo.getId());
23     soapRequestData.append("</id>");
24 
25     soapRequestData.append("<cart>");
26     soapRequestData.append(userInfo.getCart());
27     soapRequestData.append("</cart>");
28 
29     soapRequestData.append("</tongtechheader>");
30     soapRequestData.append("</soapenv:Header>");
31 
32     soapRequestData.append("<soapenv:Body>");
33     soapRequestData.append("<web:getBirthInfo>");
34 
35     soapRequestData.append("<username>");
36     soapRequestData.append(username);
37     soapRequestData.append("</username>");
38 
39     soapRequestData.append("<password>");
40     soapRequestData.append(password);
41     soapRequestData.append("</password>");
42 
43     soapRequestData.append("<inputXml>");
44     soapRequestData.append(userInfo.getInputXml());
45     soapRequestData.append("</inputXml>");
46 
47     soapRequestData.append("</web:getBirthInfo>");
48     soapRequestData.append("</soapenv:Body>");
49     soapRequestData.append("</soapenv:Envelope>");
50 
51     // 创建请求
52     HttpEntity<String> request = new HttpEntity<String>(soapRequestData + "", headers);
53 
54     // 发送post请求并获取到响应结果
55     String str = null;
56     // 封装一下返回结果
57     Map<String, Object> analyseResult = new HashMap<String, Object>();
58     try {
59         str = restTemplate.postForObject(请求地址, request, String.class);
60         logger.info("-----------Response content-----------: " + str);
61     } catch (RestClientException e) {
62         e.printStackTrace();
63     }
64 
65     return str;
66 }

虽然你可以使用Webservice客户端来调用服务器端,但是如果实在不想那样搞,也可以通过resttemplate或者其他http请求方式进行接口i调用的。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【SpingBoot guides系列翻译】调用RESTfulWebService

    这节将演示如何在SpringBoot里面调用RESTful的WebService。

    _淡定_
  • SpringCloud开发框架入门知识

    业务中心:在进行一些庞大的项目设计过程之中,应该有更加完善的业务处理,这样所有的客户端(服务器),用这些业务中心的操作就可以完成具体的功能。

    用户2781897
  • Nacos入门指南03 - 服务发现实践

    然后在 service-consumer 的 Controller 中实现对 service-provider 的接口调用。

    dys
  • 微服务架构之Spring Cloud入门

    欢迎访问千羽的编程时光 https://nateshao.gitee.io或者原文获取更多精彩文章!

    千羽
  • SpringCloud2.0

      从传统架构(单体应用) 到 分布式架构(以项目进行拆分) 到 SOA架构(面向服务架构) 到 微服务架构

    全栈程序员站长
  • java高级进阶|SpringCloud之服务调用组件Feign

    Feign是一个声明式WebService客户端,使用Feign能让编写WebService客户端更加简单,它的使用方式是定义一个接口,然后在上面添加 注解,同...

    码农王同学
  • SpringCloud服务发现注册Eureka +Ribbon + Feign

    假设有2个微服务A和B分别在端点http:// localhost:8181 /和http:// localhost:8282 /上运行,如果想要在A服务中调用...

    慕容千语
  • spring-cloud-kubernetes的服务发现和轮询实战(含熔断)

    本文是《spring-cloud-kubernetes实战系列》的第四篇,主要内容是在kubernetes上部署两个应用:Web-Service和Account...

    程序员欣宸
  • SpringCloud 微服务实战笔记

    这是很早以前在我的博客上写的关于 SpringCloud 的一些实战笔记,现在我把这些实战笔记集合起来贴到这里,可能会对一些刚刚接触 SpringCloud 微...

    张乘辉
  • 【SpringBoot WEB 系列】AsyncRestTemplate 之异步非阻塞网络请求介绍篇

    AsyncRestTemplate 发起异步网络请求,由 Spring4.0 引入,但是在 5.0 就被表上了删除注解,官方推荐使用基于 React 的 Web...

    一灰灰blog
  • 带你走进微服务的世界 认识Spring Cloud

    随着互联网的发展以及业务的复杂度,单体应用越来越庞大,网站应用的规模不断扩大。我们在开发过程中,一个方法的代码不断增加,相同的代码肯定有的 ,我们都会进行拆分,...

    小东啊
  • 如何更优雅地对接第三方API

    本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/reposito...

    用户1148394
  • SpringCloud Fegin 负载均衡

    Fegin 是一个声明式 WebService客户端。使用 Fegin能让编写 Web Service 客户端更加简单,它的使用方法是定义一个接口,然后在上面添...

    Java架构师必看
  • 最适合新手入门的SpringCloud教程 6—Ribbon负载均衡「F版本」

    写博客一个多月了,断断续续的更新,今天有小伙伴催更新了,很高兴,说明我的分享是有意义的。

    鹿老师的Java笔记
  • 一步一步学做工具之RestTemplate详解

    这是工具开发连载的第二篇,还是做专项知识的铺垫,HTTP在互联网的地位就不用说了,本节咱们用Spring Boot来实现HTTP的请求,接上文,上一节咱们实现了...

    周辰晨
  • SpringCloud教程(Finchley版本)-03:负载均衡(Ribbon)

    启动类中,照例要给注册为一个eurekaClient,添加@EnableEurekaClient

    IT云清
  • 新版本SpringCloud sleuth整合zipkin

    Spring Cloud Sleuth为Spring Cloud实现了分布式跟踪解决方案。

    海向
  • 利用springcloud搭建微服务集成中心

    整体目录结构 这里整个功能是一个maven项目,注册中心与功能服务都是maven项目里面的模块。

    用户5166330
  • 2021升级版微服务教程2—微服务开发环境准备

    2021升级版SpringCloud教程从入门到实战精通「H版&alibaba&链路追踪&日志&事务&锁」

    鹿老师的Java笔记

扫码关注云+社区

领取腾讯云代金券