webservice调用对接第三方系统

#webservice调用对接第三方系统#

最近接到一个任务,需要对接第三方数据,第三方提供对接方式的是通过webservice调用,webservice调用有好几种方式,具体可以自行了解,我选择的是通过wsdl文件自动生成客户端代码对接。

第一步:获取wsdl文件

既然是通过wsdl文件生成客户端代码的方式,那么首先就需要获得wsdl文件。wsdl文件去哪获取呢?

一般第三方会提供一个 wsdl 文件的访问地址,拿获取天气预报的访问地址来说格式如:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl

ps:可能只给了前面一节http://www.webxml.com.cn/WebServices/WeatherWebService.asmx,一般自行把"?wsdl"拼接上即可,或者直接访问http://www.webxml.com.cn/WebServices/WeatherWebService.asmx,里面也会有提示

成功访问的话会进入到如下格式页面

这时可以ctrl+s保存或者查看源代码再ctrl+s保存,保存的时候后缀可以是xml或者wsdl,但这里建议是wsdl,xml和wsdl在第二步生成客户端代码的时候生成的代码会有区别,我用xml生成的代码在调用的时候会失败,后面换成wsdl重新生成的

第二步:通过wsdl文件自动生成客户端代码

通过wsimport命令生成客户端代码

命令:wsimport -s ./ -p com.test.tempuri .\view-XRHotel_WS__wsdl.wsdl

-s:指的是生成java文件,如果不加上那么只会生成class文件

./:指的是生成到当前目录

com.test.tempuri:指的是生成的类文件引用的包名

.\view-XRHotel_WS__wsdl.wsdl:则是指定根据哪个wsdl文件生成客户端代码

注意:第三方提供的wsdl文件里的ip不一定全是公网ip或者域名,如果内容里有自己访问不到的内网ip在生成的时候就会提示连接失败,此时需要根据对应的提示将其替换掉。当然也有可能有其它异常,根据提示一一修改就好了,下载下来的wsdl文件不一定是直接可用的

第三步:调用

在生成的文件中一般会有一个xxxService的service类,以及一个xxxServiceSoap的类,而service中会有一个getxxxxServiceSoap的方法可以获取到xxxxServiceSoap,这些在调用时需要用到

java 复制代码
public static void main(String[] args) throws Exception {
    // new出xxxService对象
    XXXService service = new XXXService();
    // 通过xxxService对象的getXXXXServiceSoap()方法获取XXXServiceSoap
    XXXServiceSoap soap = service.getXXXXServiceSoap();
    // XXXServiceSoap会有各种第三方开放的方法,调用传入对应参数
    String result = soap.house("2023-08-28");
    System.out.println("Result: " + result);
}
相关推荐
Barkamin18 小时前
队列的实现(Java)
java·开发语言
骇客野人18 小时前
自己手搓磁盘清理工具(JAVA版)
java·开发语言
J2虾虾18 小时前
在SpringBoot中使用Druid
java·spring boot·后端·druid
清风徐来QCQ18 小时前
Java笔试总结一
java·开发语言
10Eugene19 小时前
C++/Qt自制八股文
java·开发语言·c++
程序员小假19 小时前
为什么要有 time _wait 状态,服务端这个状态过多是什么原因?
java·后端
yuweiade20 小时前
【Spring】Spring MVC案例
java·spring·mvc
罗超驿21 小时前
Java数据结构_链表
java·数据结构·链表
小璐资源网21 小时前
C++中如何正确区分`=`和`==`的使用场景?
java·c++·算法
AMoon丶21 小时前
C++模版-函数模版,类模版基础
java·linux·c语言·开发语言·jvm·c++·算法