首页 > 其他分享 >一次搞定:借助Hutool封装代码快速解决webservice调用烦恼

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

时间:2023-08-26 14:55:16浏览次数:49  
标签:搞定 调用 封装 webservice Hutool 接口 客户端

前言

相信很多同行哪怕学了许多主流技术,但工作上依然免不了和传统企业打交道,而这样的企业往往还在用webservice做接口交互。

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

愿天下再无webservice!

正文

引入Hutool依赖就不说了,直接上硬菜。

1、选择测试案例

因为公司内部调用的厂家webservice不方便公开,所以我在网上选择了一个免费的webservice接口作为案例。

地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx

这里选择第一个即可

image

2、分析webservice

调试提供方的webservice接口,首先要学会分析一下,基本上就是三原则。

方法名称、命名空间、入参名称,如下图红框所示。

image

3、封装webservice客户端

借助Hutool中的SoapClient来实现客户端调用webservice的工具类。

首先,抽取命名空间和webservice地址,这里地址在调试阶段可以写死,后续再改为配置形式。

image

其次,定义调用客户端方法,入参分别是方法名、入参名、入参值。

这样这个方法被调用时,就可以动态传入webservice中不同的方法及参数,达到公用的目的。

红框部分就是Hutool提供的SoapClient创建客户端

image

4、优化客户端调用

webservice在Hutool的工具类集合中属于非核心维护的一类工具,所以内部本身是有一些地方没有优化的。

比如上面截图中的用法就是官网的说明,直接SoapClient.create()来创建。

我们点进去源码看一下,发现每次都是new一个对象。

image

但因为封装的比较深,我们还是写个简单的方法验证一下是不是每次都新建了对象。

直接创建两次对象,然后进行比较,看是否指向同一个引用,发现返回是false,说明确实是不同的对象。

image

考虑到生产环境下,存在访问量突增的可能,如果每次创建一个对象存在隐患,这里我们使用单例模式优化一下。

单例模式的写法很多,我这里选择Holder方式,也就是双重检查锁进一步优化之后的方式,在高并发场景下要更合适一点。

image

接下来,我们验证下单例模式是否生效。

image

修改下之前创建客户端的代码,这样每次请求时,只获取一次客户端就可以了。

image

5、处理异常信息

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

image

6、测试效果

调用一开始的webservice接口,看是否可以成功。

image

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

对方的入参和出参都是XML格式,最终效果如下:

image

总结

1、拿到一个webservice接口后,首先分析命名空间、方法名、入参名分别是什么;

2、使用Hutool提供的SoapClient工具类完成webservice的动态调用,同时配合单例模式进行优化;

3、错误信息处理的优化。

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

想查看完整工具类的也可以自己去下载,然后自己测一测效果。


喜欢的xdm,麻烦【点个赞】,【收藏一下】以备后用,持续输出干货和工作中的一些经验,也可以点头像【关注下我】哦~

标签:搞定,调用,封装,webservice,Hutool,接口,客户端
From: https://www.cnblogs.com/fulongyuanjushi/p/17658768.html

相关文章

  • 下划线转驼峰||驼峰转下划线,必要时首字母变大写(一行代码搞定)
    废话不多说直接上代码以下代码是下划线转驼峰(调用的Hutool工具类)StrUtil.toCamelCase()效果图如下驼峰转下划线StrUtil.toUnderlineCase效果图如下    想要全变成大写则可以调用toUpperCase()如图   必要时首字母大写则可以调用StringUtils.capitalize效......
  • springboot利用hutool快速生成验证码
    生成验证码publicclassVerificationCodeUtil{publicstaticVerificationCodegetVerification(){LineCaptchacaptcha=CaptchaUtil.createLineCaptcha(70,35,4,30);Stringkey=IdUtil.get32Uuid();VerificationCodeverificationCode......
  • Java 基于Hutool实现DES加解密
    POM.XML配置<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://ma......
  • springboot验证码-Hutool-captcha
    前言在Web应用程序中,为了保护用户信息的安全性,验证码已经成为了一个非常普遍的安全措施,而Hutool-captcha是一款非常优秀的开源图形验证码工具,简单易用,提供了丰富的特性,可以帮助我们快速实现验证码功能。本文将介绍如何使用SpringBoot整合Mybatis-Plus和Hutool-captcha实现验证码......
  • springboot验证码-kaptcha,hutool-captcha
    前言在springboot的登陆页面中为了防止机器大规模注册,机器暴力破解数据密码等危害,需要验证随机生成的验证码。现提出两种简易方案生成验证码功能,一种采用springboot整合kaptcha第三方验证码生成工具的生成方案;另一种采用springboot整合第三方类库hutool生成验证码,验证成功跳转至s......
  • .net【C#】调用 webservice
    【C#】调用webservice的三种方法总结 WebService,WCF,WebApi区别与特点......
  • Java 工具类库:Hutool使用说明
    Hutool是什么Hutool是一个Java工具包类库,它可以对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Utils工具类。Hutool即是Hu(谐音“糊涂”)+tool,前者致敬作者“前任公司”,后者为工具之意,谐音“糊涂”,寓意追求“万事都作糊涂观,无所谓失,无所谓得”的......
  • 爬虫设置代理服务器和端口:轻松搞定网络爬虫的必备技巧!
    亲爱的爬虫爱好者,咱们在网络爬虫之旅中,设置代理服务器和端口是必不可少的一环。今天,作为一名http代理产品供应商,我将与你分享如何轻松地设置代理服务器和端口,助你在爬虫世界中获得更高的成功率。一、为什么要设置代理服务器和端口?在进行网络爬虫时,有些网站对频繁的请求......
  • 使用hutool封装的Excel工具类
    好用的工具类hutool工具类hutool操作excel这篇文章使用hutool的excel包封装项目中使用的excel工具类;引入包可以简单直接引入hutool-all,但是如果不用其他的话建议单独引入excel包<dependency><groupId>cn.hutool</groupId><artifactId>hutool-......
  • 使用hutool给excel单元格标黄和添加批注
    packagecom.yc.cloud.excel.util;importcn.hutool.poi.excel.ExcelWriter;importlombok.extern.slf4j.Slf4j;importorg.apache.poi.hssf.usermodel.HSSFClientAnchor;importorg.apache.poi.hssf.usermodel.HSSFRichTextString;importorg.apache.poi.ss.usermodel.......