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

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

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

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

前言

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

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

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

正文

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

1、选择测试案例

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

总结

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

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

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • 一文看懂为苹果Vision Pro开发应用程序

    译者 | 布加迪审校 | 重楼苹果的Vision Pro是一款混合现实(MR)头戴设备。Vision Pro结合了虚拟现实(VR)和增强现实(AR)的沉浸感。其高分辨率显示屏、先进的传感器和强大的处理能力
  • 三万字盘点 Spring 九大核心基础功能

    大家好,我是三友~~今天来跟大家聊一聊Spring的9大核心基础功能。话不多说,先上目录:图片友情提示,本文过长,建议收藏,嘿嘿嘿!一、资源管理资源管理是Spring的一个核心的基础功能,不
  • 每天一道面试题-CPU伪共享

    前言:了不起:又到了每天一到面试题的时候了!学弟,最近学习的怎么样啊 了不起学弟:最近学习的还不错,每天都在学习,每天都在进步! 了不起:那你最近学习的什么呢? 了不起学弟:最近在学习C
  • 腾讯盖楼,字节拆墙

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之“想重温暴刷深渊、30+技能搭配暴搓到爽的游戏体验吗?一起上晶核,即刻暴打!”曾凭借直播腾讯旗下代理格斗游戏《DNF》一
  • 机构称Q2国内智能手机销量同比下滑4% vivo份额重回第1

    7月29日消息,根据市场调查机构Counterpoint Research公布的最新报告,2023年第2季度中国智能手机销量同比下降4%,创新自2014年以来第2季度销量新低。报
  • 超级标准版旗舰!iQOO 11S全球首发iQOO超算独显芯片

    上半年已接近尾声,截至目前各大品牌旗下的顶级旗舰都已悉数亮相,而下半年即将推出的顶级旗舰已经成为了数码圈爆料的主流,其中就包括全新的iQOO 11S系
  • iQOO Neo8 Pro即将开售:到手价3099元起 安卓性能最强旗舰

    5月23日,iQOO如期举行了新品发布会,全新的iQOO Neo8系列也正式与大家见面,包含iQOO Neo8和iQOO Neo8 Pro两个版本,其中标准版搭载高通骁龙8+,而Pro版更
  • 回归OPPO两年,一加赢了销量,输了品牌

    成为OPPO旗下主打性能的先锋品牌后,一加屡创佳绩。今年618期间,一加手机全渠道销量同比增长362%,凭借一加 11、一加 Ace 2、一加 Ace 2V三款爆品,一加
  • 世界人工智能大会国际日开幕式活动在世博展览馆开启

    30日上午,世界人工智能大会国际日开幕式活动在世博展览馆开启,聚集国际城市代表、重量级院士专家、国际创新企业代表,共同打造人工智能交流平台。上海市副市
Top