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

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

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

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

前言

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

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

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

正文

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

1、选择测试案例

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

总结

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

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

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • 7月安卓手机好评榜:三星S23Ultra好评率第一

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年7月1日至7月31日,仅限国内市场。第一名:三星Galaxy S23 Ultra好评率:95.71%在即将迎来新
  • 不容错过的MSBuild技巧,必备用法详解和实践指南

    一、MSBuild简介MSBuild是一种基于XML的构建引擎,用于在.NET Framework和.NET Core应用程序中自动化构建过程。它是Visual Studio的构建引擎,可在命令行或其他构建工具中使用
  • 深度探索 Elasticsearch 8.X:function_score 参数解读与实战案例分析

    在 Elasticsearch 中,function_score 可以让我们在查询的同时对搜索结果进行自定义评分。function_score 提供了一系列的参数和函数让我们可以根据需求灵活地进行设置。近期
  • 使用AIGC工具提升安全工作效率

    在日常工作中,安全人员可能会涉及各种各样的安全任务,包括但不限于:开发某些安全工具的插件,满足自己特定的安全需求;自定义github搜索工具,快速查找所需的安全资料、漏洞poc、exp
  • 得物宠物生意「狂飙」,发力“它经济”

    作者|花花小萌主近日,得物宣布正式上线宠物鉴别,通过得物App内的“在线鉴别”,可找到鉴别宠物的选项。通过上传自家宠物的部位细节,就能收获拥有专业资质认证的得物鉴
  • 年轻人的“职场羞耻感”,无处不在

    作者:冯晓亭 陶 淘 李 欣 张 琳 马舒叶来源:燃次元“人在职场,应该选择什么样的着装?”近日,在网络上,一个与着装相关的帖子引发关注,在该帖子里,一位在高级写字楼亚洲金
  • 认真聊聊东方甄选:如何告别低垂的果实

    来源:山核桃作者:财经无忌爆火一年后,俞敏洪和他的东方甄选依旧是颇受外界关心的“网红”。7月5日至9日,为期5天的东方甄选“甘肃行”首次在自有App内直播,
  • 重估百度丨大模型,能撑起百度的“今天”吗?

    自象限原创 作者|程心 罗辑2023年之前,对于自己的“今天”,百度也很迷茫。“新业务到 2022 年底还是 0,希望 2023 年出来一个 1。”这是2022年底,李彦宏
  • 华为HarmonyOS 4.0将于8月4日发布 或搭载AI大模型技术

    华为宣布HarmonyOS4.0将于8月4日正式发布。此前,华为已经针对开发者公布了HarmonyOS4.0,以便于开发者提前进行适配,也因此被曝光出了一些新系统的特性
Top