Java调用WebService接口之利用hutool工具包实现

最近要对接金蝶财务系统,对方提供了一个webService接口。而且测试接口地址还是内网的,每改一处代码都要部署堡垒机去测试,光是一个登录接口就花了我两天时间很是无语(主要是接口文档地址不会看)

接口的地址大就是这种,以wsdl结尾的

图一:

c0fdfdc3e6dc4933a559dc4807377749.png

 

 打开这个接口地址之后里面就是接口方法以及接口调用参数

图二:

70c4276c3c054af9a485205dd0497bc3.png

 相信看到这,大家都有点蒙,不知如何下手,今天就以我的亲身经历告诉大家如何解决这种问题(hutool)是个好东西

图三:

125369adc8284b0597b2f19a9918b020.png

解析后的内容就是这种

图四:

 b7f3d1f0680e46ce8b2aff3035900ce6.png

 

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:log="http://login.webservice.bos.kingdee.com">
   <soapenv:Header/>
   <soapenv:Body>
      <log:login soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
         <userName xsi:type="xsd:string">"21"</userName>
         <password xsi:type="xsd:string">21@2022</password>
         <slnName xsi:type="xsd:string">eas</slnName>
         <dcName xsi:type="xsd:string">21</dcName>
         <language xsi:type="xsd:string">l2</language>
         <dbType xsi:type="xsd:int">1</dbType>
      </log:login>
   </soapenv:Body>
</soapenv:Envelope>

下面是Java代码

    @GetMapping("/test6")
    public R test6(){
        Map<String,Object> map=new HashMap<>();
        map.put("userName","user");
        map.put("password","kduser@2022");
        map.put("slnName","eas");
        map.put("dcName","gxlqtest");
        map.put("language","L2");
        map.put("dbType",1);

        SoapClient client = SoapClient.create("http://192.168.15.56:9191/ormrpc/services/EASLogin")
            // 设置要请求的方法,此接口方法前缀为web,传入对应的命名空间
            .setMethod("log:login", "http://login.webservice.bos.kingdee.com")
            .setParams(map,false).header("SOAPAction","application/soap+xml;charset=utf-8 ");
            // 设置参数,此处自动添加方法的前缀:web

        // 发送请求,参数true表示返回一个格式化后的XML内容
        // 返回内容为XML字符串,可以配合XmlUtil解析这个响应
        client.sendForResponse().getCookie("JSESSIONID");
        log.info(client.sendForResponse().toString());
        return R.ok();

    }

上面传参的内容可以参考图四,map是要传入的参数

调用成功之后就会返回下图获取sessionId,我们还可以获取cookie等参数,具体要根据你们的业务来获取即可

be7937403f7a46cd96c7d8307eaa0f4d.png

 到此处就算是调用成功了,后面如遇到其他问题还会继续更新此文章的!希望对大家有所帮助,少走些弯路!

 

Hutool是一个Java工具库,它提供了许多简化开发的工具方法和类。其中包括了对Web服务调用的支持,包括了对Webservice服务的调用Hutool提供了一个`SoapClient`类,可以用来调用Webservice接口。引用中给出了一个超简单的Webservice调用的示例,你只需要输入Webservice接口名和接口参数即可进行接口调用。 首先,你需要下载一个叫做SoapUI的工具用来测试Webservice接口。接下来,你需要获取Webservice的URL、命名空间、方法名以及参数格式。在引用中提供了一个Webservice的URL示例,即http://www.webxml.com.*** 接下来,你可以使用Hutool的`SoapClient`类来进行Webservice接口调用。你可以使用`SoapClient.create()`方法创建一个`SoapClient`对象,并使用`setEndpoint`方法设置Webservice的URL。然后,使用`setSoapAction`方法设置命名空间和方法名,并使用`addParam`方法添加参数。最后,使用`execute`方法发送请求,并获取返回结果。 总结起来,使用Hutool调用Webservice接口的步骤如下: 1. 下载并安装SoapUI工具; 2. 获取Webservice的URL、命名空间、方法名和参数格式; 3. 使用Hutool的`SoapClient`类创建一个`SoapClient`对象,并设置Webservice的URL; 4. 使用`setSoapAction`方法设置命名空间和方法名,使用`addParam`方法添加参数; 5. 使用`execute`方法发送请求,并获取返回结果。 希望对你有所帮助!
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值