文章目录

  • 准备工作
  • 一、引入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接口相关推荐

  1. Java使用XFire调用WebService接口

    看了一些Java调用WebService接口的例子,很多都是Ctrl+C,Ctrl+V的,其中有很多拿来使用后发现有错误,令人郁闷,特此写了一篇经过测试的,只是一个小例子. 服务端(为客户端提供Web ...

  2. 【WebService笔记01】使用JWS实现WebService接口的发布和调用

    这篇文章,主要介绍如何使用JWS实现WebService接口的发布和调用. 目录 一.JWS实现WebService接口 1.1.JWS发布WebService接口 (1)编写接口 (2)编写实现类 ...

  3. 如何调用外部webservice 接口来发送短信

    WebService接口 当前版本V1.2 Web Service地址:  GB2312网关 http://gateway.woxp.cn:6630/gb2312/ws_api/WebSMS.asmx ...

  4. cxf webservice接口

    利用cxf框架发布webservice接口 引入cxf jar包 通过maven引入:修改pom.xml文件 <!-- cxf-begin --> <dependency> & ...

  5. SoapUI调用webservice接口,http+post方式模仿soapui调用webservice接口

    ` SoapUI调用webservice接口,http+post方式模仿soapui调用webservice接口 项目上调用一个第三方公司提的的webservice短信接口,使用了以下几种接口调用技术 ...

  6. 【java调用webservice接口方法】

    webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使 ...

  7. [亲测可用]springBoot调用对方webService接口的几种方法示例

    目录 前言 一.需要用到的maven 二.如何调用webservice接口 调用方法一: 调用方法二: myEclipse生成的例子: idea生成的例子: 前言 平常我们开发调用接口一般会用到几种数 ...

  8. webservice接口开发详解(附完整流程demo)

    摘要 由于公司对接第三方系统业务较多,所以就采用webservice进行对接,本文项目框架使用SSH搭建,其他框架也可以参考下具体使用流程,本文demo都是测试通过而且发布成功,有需要的可以直接cop ...

  9. java wsdl xfire_Java使用XFire调用WebService接口

    服务端(为客户端提供Webservice接口): 使用工具:myeclipse-8.5-win32,apache-tomcat6.0 开发步骤: 1.创建工程 File->New->Web ...

最新文章

  1. SQL 进阶技巧(上)
  2. IgniteMe debug 寒假逆向生涯(2/100)
  3. Python中的shuffle()函数的使用
  4. 为KindEditor编辑器中的内容增加样式,使得自定义前台页面显示效果与编辑器效果一致
  5. 框架写mysql插入为空_学习springMVC框架配置遇到的问题-数据写入不进数据库时的处理办法...
  6. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第20篇]Merkle-Damgaard hash函数如何构造
  7. arm shellcode 编写详析1
  8. bzoj1449 [JSOI2009]球队收益
  9. android signal 处理总结
  10. Pytext支持分布式训练,Facebook AI基于PyTorch的NLP框架,简化部署流程
  11. 2C的世界: 用户的嘴,骗人的鬼
  12. spss分析方法-方差分析
  13. 【AD10】Altium Designer 10导入元件库图文教程
  14. 附合导线坐标计算例题_闭合附合导线计算(课件例题)
  15. PPT文档如何插入超链接
  16. 【系统化学习】CSDN算法技能树测评
  17. Java线程生命周期与状态切换
  18. ROS tf::TransfromBroadcaster tf::TransformListener listener.lookupTransform listener.waitForTransfor
  19. 树莓派开发笔记(十七):树莓派4B+上Qt多用户连接操作Mysql数据库同步(单条数据悲观锁)
  20. JVM总结(三)Minor GC、Major GC和Full GC

热门文章

  1. Linux服务器百万并发实现与问题排查
  2. 自动生成目录和参考文献上标
  3. qt 之 生成pdf
  4. 51单片机实现电机控制和LCD显示
  5. 计算机excel按F4是那个公式,Excel中F4有哪些功能 Excel如何巧妙使用F4
  6. 牛顿迭代法求一个数的平方根(python)
  7. ideaIU-2020.1下载
  8. 益聚星荣:网易有道、沪江小D等词典错误频现 莫让词典类APP误人子弟
  9. Python黑马程序员学习路线
  10. Ubuntu下Qt软件打包流程