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:\workspace\HangBan\src>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
 that ‘s:schema‘ is in namespace ‘http://www.w3.org/2001/XMLSchema‘, but compone
nts from this namespace are not referenceable from schema document ‘file:/E:/wor
kspace/practical/WebServiceWeather/src/com/weather/wsdl.xml#types?schema1‘. If t
his is the incorrect namespace, perhaps the prefix of ‘s:schema‘ needs to be cha
nged. If this is the correct namespace, then an appropriate ‘import‘ tag should
be added to ‘file:/E:/workspace/practical/WebServiceWeather/src/com/weather/wsdl
.xml#types?schema1‘.

.............

这应该是个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,可以看到输出结果

[[email protected]莆田电视台]

其他调用方式类似了

时间: 2024-10-31 10:55:51

webservice 调用国内航班,天气预报 等外部接口的相关文章

C# ASP.NET Webservice调用外部exe无效的解决方法

最近用asp.net做webservice,其中有个功能是调用执行外部的exe(类似cmd中执行),但执行Process.Start之后就没有结果,同样代码在winform下正常,折腾两天终于找到解决方法 本文参考了以下网页,十分感谢 http://bbs.csdn.net/topics/300053869 http://blog.163.com/[email protected]/blog/static/15737970200862331842368/ 环境:win7 sp1 64位 以及II

WebService调用

WebService调用方法总结 一.客户端代理类 1.方式一. using System; using System.CodeDom; using System.CodeDom.Compiler; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Reflection; using System.Text; using System.Threa

使用XmlInclude解决WebService调用时无法识别子类的异常

一.定义抽象类及子类,WebMethod实际返回子类参数 //使用XmlInclude解决WebService调用时无法识别子类的异常 [System.Xml.Serialization.XmlInclude(typeof(WageEmploeyee)), System.Xml.Serialization.XmlInclude(typeof(Boss))] public abstract class EmployeeData { //Required by XmlSerializer publi

纯 Java 开发 WebService 调用测试工具(wsCaller.jar)

注:本文来自hacpai.com:Tanken的<纯 Java 开发 WebService 调用测试工具(wsCaller.jar)>的文章 基于 Java 开发的 WebService 测试工具,不像上文的 iWallpaper.jar 只能实现在 Windows 系统下的功能,此工具发挥了 Java 跨平台的优势,亲测可在 Windows.Mac OS 及 Linux 下运行及使用.简单易用的专门用于测试 WebService 的小工具,在 2003 版 wsCaller.jar 的基础上

使用WebRequest对象调用新浪天气预报&lt;转&gt;

// 待请求的地址 string url = "http://www.cnblogs.com"; // 创建 WebRequest 对象,WebRequest 是抽象类,定义了请求的规定, // 可以用于各种请求,例如:Http, Ftp 等等. // HttpWebRequest 是 WebRequest 的派生类,专门用于 Http System.Net.HttpWebRequest request = System.Net.HttpWebRequest.Create(url) a

WebService 调用三种方法

//来源:http://www.cnblogs.com/eagle1986/archive/2012/09/03/2669699.html 最近做一个项目,由于是在别人框架里开发app,导致了很多限制,其中一个就是不能直接引用webservice . 我们都知道,调用webserivice 最简单的方法就是在 "引用"  那里点击右键,然后选择"引用web服务",再输入服务地址. 确定后,会生成一个app.config 里面就会自动生成了一些配置信息. 现在正在做的

WebService 调用

一.WebService调用 1.webservice支持四种调用方式:SOAP 1.1,SOAP 1.2,GET,POST. 2.如果要webservice支持GET,POST调用还需要web.config中 <system.web> 添加: <webServices> <protocols> <add name="HttpGet"/> <add name="HttpPost"/> </protoc

webservice调用的四种方式

因为数据在网络上传输都是通过xml形式的,本质都是把数据封装然后通过xml传输,接收到的也是xml文件,1 和 4 让程序员屏蔽了处理xml文件,而2 和3需要程序员自己写请求体 ,还要处理返回的xml文件 1.通过 wsimport命令 生成了 java代码 然后导入工程 调用,屏蔽了 数据在网络上xml形式传输的细节,利用代理对象让调用远程方法好像本项目工程调用代码一样 :缺点 可能java代码文件过多 2.ajax 需要 自己 指定请求的xml文件,还要接受的 xml文件进行解析,比较麻烦

利用java webservice调用天气预报实践

最近要和其他业务系统进行数据交换,选择了webservice方案,于是查了一下网上的用法.首先是做一个天气的查询例子,看着挺简单,可实际动手做起来发现坑很多,费了半天劲终于调通了,于是记录下来. 1,在eclipse里新建一个java项目,在src里添加一个文件,命名为WeatherWebService.wsdl. 2,在浏览器中访问地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl,这个是天气预报的webser