当前位置:首页 > 科技  > 软件

一次搞定:借助Hutool封装代码快速解决webservice调用烦恼

来源: 责编: 时间:2023-10-24 09:00:38 460观看
导读前言相信很多同行哪怕学了许多主流技术,但工作上依然免不了和传统企业打交道,而这样的企业往往还在用webservice做接口交互。本文是作者近两年和医疗行业的厂家打交道研究出来的一点调用webservice接口的心得,代码在生产

Y5s28资讯网——每日最新资讯28at.com

前言

相信很多同行哪怕学了许多主流技术,但工作上依然免不了和传统企业打交道,而这样的企业往往还在用webservice做接口交互。Y5s28资讯网——每日最新资讯28at.com

本文是作者近两年和医疗行业的厂家打交道研究出来的一点调用webservice接口的心得,代码在生产环境也用了挺久了,专门捞出来作为一期干货分享给大家。Y5s28资讯网——每日最新资讯28at.com

愿天下再无webservice!Y5s28资讯网——每日最新资讯28at.com

正文

引入Hutool依赖就不说了,直接上硬菜。Y5s28资讯网——每日最新资讯28at.com

1、选择测试案例

因为公司内部调用的厂家webservice不方便公开,所以我在网上选择了一个免费的webservice接口作为案例。Y5s28资讯网——每日最新资讯28at.com

地址: http://www.webxml.com.cn/WebServices/WeatherWebService.asmxY5s28资讯网——每日最新资讯28at.com

这里选择第一个即可Y5s28资讯网——每日最新资讯28at.com

Y5s28资讯网——每日最新资讯28at.com

调试提供方的webservice接口,首先要学会分析一下,基本上就是三原则。Y5s28资讯网——每日最新资讯28at.com

方法名称、命名空间、入参名称,如下图红框所示。Y5s28资讯网——每日最新资讯28at.com

Y5s28资讯网——每日最新资讯28at.com

借助Hutool中的SoapClient来实现客户端调用webservice的工具类。Y5s28资讯网——每日最新资讯28at.com

首先,抽取命名空间和webservice地址,这里地址在调试阶段可以写死,后续再改为配置形式。Y5s28资讯网——每日最新资讯28at.com

Y5s28资讯网——每日最新资讯28at.com

其次,定义调用客户端方法,入参分别是方法名、入参名、入参值。Y5s28资讯网——每日最新资讯28at.com

这样这个方法被调用时,就可以动态传入webservice中不同的方法及参数,达到公用的目的。Y5s28资讯网——每日最新资讯28at.com

红框部分就是Hutool提供的SoapClient创建客户端Y5s28资讯网——每日最新资讯28at.com

Y5s28资讯网——每日最新资讯28at.com

webservice在Hutool的工具类集合中属于非核心维护的一类工具,所以内部本身是有一些地方没有优化的。Y5s28资讯网——每日最新资讯28at.com

比如上面截图中的用法就是官网的说明,直接SoapClient.create()来创建。Y5s28资讯网——每日最新资讯28at.com

我们点进去源码看一下,发现每次都是new一个对象。Y5s28资讯网——每日最新资讯28at.com

Y5s28资讯网——每日最新资讯28at.com

但因为封装的比较深,我们还是写个简单的方法验证一下是不是每次都新建了对象。Y5s28资讯网——每日最新资讯28at.com

直接创建两次对象,然后进行比较,看是否指向同一个引用,发现返回是false,说明确实是不同的对象。Y5s28资讯网——每日最新资讯28at.com

Y5s28资讯网——每日最新资讯28at.com

考虑到生产环境下,存在访问量突增的可能,如果每次创建一个对象存在隐患,这里我们使用单例模式优化一下。Y5s28资讯网——每日最新资讯28at.com

单例模式的写法很多,我这里选择Holder方式,也就是双重检查锁进一步优化之后的方式,在高并发场景下要更合适一点。Y5s28资讯网——每日最新资讯28at.com

Y5s28资讯网——每日最新资讯28at.com

接下来,我们验证下单例模式是否生效。Y5s28资讯网——每日最新资讯28at.com

Y5s28资讯网——每日最新资讯28at.com

修改下之前创建客户端的代码,这样每次请求时,只获取一次客户端就可以了。Y5s28资讯网——每日最新资讯28at.com

Y5s28资讯网——每日最新资讯28at.com

官网没有明确指出如何处理错误信息,但本身提供了相关的方法,我这边通过不断验证之后,给出了最优解。Y5s28资讯网——每日最新资讯28at.com

Y5s28资讯网——每日最新资讯28at.com

调用一开始的webservice接口,看是否可以成功。Y5s28资讯网——每日最新资讯28at.com

Y5s28资讯网——每日最新资讯28at.com

最后,这里展示下我负责的项目在生产环境调用第三方厂家webservice接口的入参和出参,同样使用的是上面封装的工具类。对方的入参和出参都是XML格式,最终效果如下:

Y5s28资讯网——每日最新资讯28at.com

总结

1、拿到一个webservice接口后,首先分析命名空间、方法名、入参名分别是什么;Y5s28资讯网——每日最新资讯28at.com

2、使用Hutool提供的SoapClient工具类完成webservice的动态调用,同时配合单例模式进行优化;Y5s28资讯网——每日最新资讯28at.com

3、错误信息处理的优化。Y5s28资讯网——每日最新资讯28at.com

4、最后有一点要注意,Hutool的webservice工具类还未支持Java17,只兼容了Java8,因此不建议高版本使用,但目前大多数企业依然是Java8为主流版本,后续Hutool肯定也会根据版本来升级的。Y5s28资讯网——每日最新资讯28at.com

想查看完整工具类的也可以自己去下载,然后自己测一测效果。Y5s28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-14720-0.html一次搞定:借助Hutool封装代码快速解决webservice调用烦恼

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 五个不能错过的VS Code插件

下一篇: 揭秘 Go 中的 new() 和 make() 函数

标签:
  • 热门焦点
  • Find N3入网:最高支持16+1TB

    OPPO将于近期登场的Find N3折叠屏目前已经正式入网,型号为PHN110。本次Find N3在外观方面相比前两代有很大的变化,不再是小号的横向折叠屏,而是跟别的厂商一样采用了较为常见的
  • 红魔电竞平板评测:大屏幕硬实力

    前言:三年的疫情因为要上网课的原因激活了平板市场,如今网课的时代已经过去,大家的生活都恢复到了正轨,这也就意味着,真正考验平板电脑生存的环境来了。也就是面对着这种残酷的
  • 6月安卓手机性能榜:vivo/iQOO霸占旗舰排行榜前三

    2023年上半年已经正式过去了,我们也迎来了安兔兔V10版本,在新的骁龙8Gen3和天玑9300发布之前,性能榜的榜单大体会以骁龙8Gen2和天玑9200+为主,至于那颗3.36GHz的骁龙8Gen2领先
  • 摸鱼心法第一章——和配置文件说拜拜

    为了能摸鱼我们团队做了容器化,但是带来的问题是服务配置文件很麻烦,然后大家在群里进行了“亲切友好”的沟通图片图片图片图片对比就对比,简单对比下独立配置中心和k8s作为配
  • 一文看懂为苹果Vision Pro开发应用程序

    译者 | 布加迪审校 | 重楼苹果的Vision Pro是一款混合现实(MR)头戴设备。Vision Pro结合了虚拟现实(VR)和增强现实(AR)的沉浸感。其高分辨率显示屏、先进的传感器和强大的处理能力
  • SpringBoot中使用Cache提升接口性能详解

    环境:springboot2.3.12.RELEASE + JSR107 + Ehcache + JPASpring 框架从 3.1 开始,对 Spring 应用程序提供了透明式添加缓存的支持。和事务支持一样,抽象缓存允许一致地使用各
  • 只需五步,使用start.spring.io快速入门Spring编程

    步骤1打开https://start.spring.io/,按照屏幕截图中的内容创建项目,添加 Spring Web 依赖项,并单击“生成”按钮下载 .zip 文件,为下一步做准备。请在进入步骤2之前进行解压。图
  • 一文掌握 Golang 模糊测试(Fuzz Testing)

    模糊测试(Fuzz Testing)模糊测试(Fuzz Testing)是通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。可以用来发现应用程序、操作系统和网络协议等中的漏洞或
  • “又被陈思诚骗了”

    作者|张思齐 出品|众面(ID:ZhongMian_ZM)如今的国产悬疑电影,成了陈思诚的天下。最近大爆电影《消失的她》票房突破30亿断层夺魁暑期档,陈思诚再度风头无两。你可以说陈思诚的
Top