webservice 调用国内航班,天气预报 等外部接口
通过前面的记录,我们知道发布一个服务之后,如果别人需要调用,则必须知道我们的wsdl地址,同理,我们要调用天气预报的接口,也必须得到该对应wsdl,下面给出比较齐全的wsdl网址,需要的可以自己去查阅:http://www.webxml.com.cn/zh_cn/web_services.aspx 今天的例子,将讲解如何调用去全国电视tv的接口 通过查阅,可以得到该wsdl地址为: http://webservice.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx?wsdl (一)、wsimport生成代理类 ? ?wsimport在 jax-ws使用webservice中已经介绍使用过了,这里直接使用。 ? ?创建new web项目,cmd进入项目路径 ?准备将所有代理类,生成到com.xj.service 这个package中 ?? D:workspaceHangBansrc>wsimport?-p?com.xj.tv?-keep?http://webservice.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx?wsdl ?使用jdk6编译报错? [WARNING] src-resolve.4.2:?Error resolving component 's:schema'. It was detected ............. 这应该是个bug 解决方法:将wsdl保存到本地,将所有的 <s:element?ref="s:schema"/> 改成?<s:any minOccurs="2" maxOccurs="2"/> 并且将后面的 <s:any /> 删除。 再次执行wsimport命令,wsdl地址改为本地地址如下 wsimport -p com.xj.service -keep e:/hangban.xml 如果还是报错,就将wsdl文件里面的<wsdl:documentation?节点全部删除。应该就没问题了 生成好java文件之后 。就可以调用了。 可以看到com.xj.tv中都是通过wsimport生成的代理类,可以直接使用 上面有很多类,已经对应的response,我们要找到的是带有soap的类 (二)、客户端直接调用代理类 ?ChinaTVprogramWebService?service?=?new?ChinaTVprogramWebService(); ChinaTVprogramWebServiceSoap?soap?=?service.getChinaTVprogramWebServiceSoap(); ArrayOfString?arrayOfString?=?soap.getTVchannelString(80); List<String>?list?=?arrayOfString.getString(); for(String?string:list){ System.out.println(list); } 给TVchannel任意一个id,例如80,可以看到输出结果 [411@莆田电视台] 其他调用方式类似了 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |