IDEA引入WebService接口
文章目录
- 准备工作
- 一、引入IDEA
- 二、代码修改
- 三、测试
- 总结
准备工作
基础环境:
<spring-boot.version>2.0.4.RELEASE</spring-boot.version>
<java.version>1.8</java.version>
本文将选取里面的 “中国气象局” 天气查询服务作为调用演示。
Endpoint 地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx
WSDL地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
一、引入IDEA
第一步:先选择需要引入的package目录,选择Tools -> WebServices -> Generate Java Code From Wsdl…
第二步:填入你获得的WSDL URL,Service Platform选择JWSDP 2.2那一条
第三步:点击OK后,你将获得如下的代码列表在你的package中
通常问题在这一步,此时会报错然后package中生成了一个文件,WeatherWebService.asmx
我们只需要把这个文件改名为我们可以打开的文件类型,列如.xml文件
将文件中所有的<s:element ref=“s:schema” /><s:any /> 替换成 <s:any minOccurs=“2” maxOccurs=“2”/>
注意:是一对标签改为一个标签,有些小伙伴理解错误,把<s:any />替换成了<s:any minOccurs="2" maxOccurs="2"/>,要细心哦
走过这个坑后,就可以继续返回第二步,将WSDL URL选择为你package中的已经改好的WeatherWebService.asmx这个文件,重新OK走起
对应的class文件可以直接删除,我们自行编译生成
WeatherWebService.asmx这个文件万万不能删除,后面会用到
二、代码修改
打开WeatherWebService.java(webservice主类,通常就是你WSDL地址后面的名字)
特别提醒:
1)代理类中有些类相互引用时,使用的是绝对地址,如在 WeatherWebServiceSoap 接口中使用了这样的代码, cn.com.webxml.ArrayOfString 来引用 ArrayOfString ,于是要不就是自己新建和它一样的包,然后放置进去,如上所示,要不就是修改源码中原来的包名和自己包名的保持一致,否则报错。
2)因为 wsimport.exe 是转换的本地的 wsdl 文件,而不是在线的 wsdl 文件,所以代码中关联的也是本地的 wsdl 文件,这个文件必须存在,如果这个文件删除了,则项目运行的时候就会找不到而解析失败。所以如果文件移动了位置,则代码中也要相应的修改。
3)建议将 wsdl 文件放在项目中(资源目录下),这样就可以和项目一起移动,否则如果将来项目移动了,而忘了本地的 wsdl 文件,显然运行就报错了。
三、测试
这是我们唯一需要写代码的地方,新建一个测试类TestMain.java
package com.ebei.sharecenter.weather;import java.util.List;public class TestMain {public static void main(String[] args) {/**1、创建实现类对象* */WeatherWebService weatherWebService = new WeatherWebService();/** 2、获取服务接口实例* 这些代码只能看着源码跟着感觉来写,因为代码完全是人家写的,对方通常也不会提供什么使用文档的*/WeatherWebServiceSoap weatherWebServiceSoap = weatherWebService.getWeatherWebServiceSoap();/***3、有了服务接口实例,就可以调用其中的方法了,这里返回值也是对方使用的对象*/ArrayOfString arrayOfString = weatherWebServiceSoap.getWeatherbyCityName("无锡");/*** 4、看着源码即可轻松写出,毕竟都是程序猿,猜也猜出它的目的*/List<String> stringList = arrayOfString.getString();int count = 1;for (String s : stringList) {System.out.println((count++) + ":::" + s);}}
}
若此时发现报错
No namespace on “html” element. You must send a SOAP message.
需要排除我们引入的cxf相关包
<exclusions><exclusion><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-transports-http</artifactId></exclusion><exclusion><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-frontend-jaxws</artifactId></exclusion>
</exclusions>
总结
此篇文章上半部分参考了外站某个博主的文章JWS(JAVA WEB SERVICE) 调用第三方 WEBSERVICE 服务·天气预报
测试期间发现的坑参考了本站webService调用天气接口遇见的问题
如有侵权,联系删除
希望这是你参考的最后一篇文章!
IDEA引入WebService接口相关推荐
- Java使用XFire调用WebService接口
看了一些Java调用WebService接口的例子,很多都是Ctrl+C,Ctrl+V的,其中有很多拿来使用后发现有错误,令人郁闷,特此写了一篇经过测试的,只是一个小例子. 服务端(为客户端提供Web ...
- 【WebService笔记01】使用JWS实现WebService接口的发布和调用
这篇文章,主要介绍如何使用JWS实现WebService接口的发布和调用. 目录 一.JWS实现WebService接口 1.1.JWS发布WebService接口 (1)编写接口 (2)编写实现类 ...
- 如何调用外部webservice 接口来发送短信
WebService接口 当前版本V1.2 Web Service地址: GB2312网关 http://gateway.woxp.cn:6630/gb2312/ws_api/WebSMS.asmx ...
- cxf webservice接口
利用cxf框架发布webservice接口 引入cxf jar包 通过maven引入:修改pom.xml文件 <!-- cxf-begin --> <dependency> & ...
- SoapUI调用webservice接口,http+post方式模仿soapui调用webservice接口
` SoapUI调用webservice接口,http+post方式模仿soapui调用webservice接口 项目上调用一个第三方公司提的的webservice短信接口,使用了以下几种接口调用技术 ...
- 【java调用webservice接口方法】
webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使 ...
- [亲测可用]springBoot调用对方webService接口的几种方法示例
目录 前言 一.需要用到的maven 二.如何调用webservice接口 调用方法一: 调用方法二: myEclipse生成的例子: idea生成的例子: 前言 平常我们开发调用接口一般会用到几种数 ...
- webservice接口开发详解(附完整流程demo)
摘要 由于公司对接第三方系统业务较多,所以就采用webservice进行对接,本文项目框架使用SSH搭建,其他框架也可以参考下具体使用流程,本文demo都是测试通过而且发布成功,有需要的可以直接cop ...
- java wsdl xfire_Java使用XFire调用WebService接口
服务端(为客户端提供Webservice接口): 使用工具:myeclipse-8.5-win32,apache-tomcat6.0 开发步骤: 1.创建工程 File->New->Web ...
最新文章
- SQL 进阶技巧(上)
- IgniteMe debug 寒假逆向生涯(2/100)
- Python中的shuffle()函数的使用
- 为KindEditor编辑器中的内容增加样式,使得自定义前台页面显示效果与编辑器效果一致
- 框架写mysql插入为空_学习springMVC框架配置遇到的问题-数据写入不进数据库时的处理办法...
- [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第20篇]Merkle-Damgaard hash函数如何构造
- arm shellcode 编写详析1
- bzoj1449 [JSOI2009]球队收益
- android signal 处理总结
- Pytext支持分布式训练,Facebook AI基于PyTorch的NLP框架,简化部署流程
- 2C的世界: 用户的嘴,骗人的鬼
- spss分析方法-方差分析
- 【AD10】Altium Designer 10导入元件库图文教程
- 附合导线坐标计算例题_闭合附合导线计算(课件例题)
- PPT文档如何插入超链接
- 【系统化学习】CSDN算法技能树测评
- Java线程生命周期与状态切换
- ROS tf::TransfromBroadcaster tf::TransformListener listener.lookupTransform listener.waitForTransfor
- 树莓派开发笔记(十七):树莓派4B+上Qt多用户连接操作Mysql数据库同步(单条数据悲观锁)
- JVM总结(三)Minor GC、Major GC和Full GC