互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示。
一些常用的webservice网站的链接地址: http://www.tuicool.com/articles/iIfqma
一:调用免费的web service获取天气预报信息
1.第三方服务地址
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
2.生成本地桩(借助wsimport命令工具自动生成客户端代码)
打开命令行窗口,切换到项目的src目录,执行"wsimport -keep http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl"生成客户端代码,如下图所示:
运行结果显示,使用wsimport工具直接生成客户端代码会抛异常, 无法生成客户端代码, 只是因为我们要调用的WebService是用.net写的,这个是Java调用net的webservice都有的问题,这个问题的解决办法如下:
- 将对应的wsdl文档保存到本地
2、修改wsdl文档的部分内容:将 <s:element ref="s:schema" /><s:any /> 替换成 <s:any minOccurs="2" maxOccurs="2"/>
再次执行wsimport生成代码,这次使用保存在本地的WeatherWS.wsdl文件来进行生成,如下图所示:
从执行结果显示,这一次可以正常生成代码了,刷新一下src目录,就可以看到生成的代码了,如下图所示:
3.借助生成的代码编写请求代码
package me.gacl.ws.client; import java.util.List; import org.junit.Test; import cn.com.webxml.ArrayOfString; import cn.com.webxml.WeatherWebService; import cn.com.webxml.WeatherWebServiceSoap; public class WeatherWSClient { public static void main(String[] args) { // 创建一个WeatherWS工厂 WeatherWebService factory = new WeatherWebService(); // 根据工厂创建一个WeatherWSSoap对象 WeatherWebServiceSoap weatherWSSoap = factory .getWeatherWebServiceSoap(); // 调用WebService提供的getWeather方法获取南宁市的天气预报情况 ArrayOfString weatherInfo = weatherWSSoap.getWeatherbyCityName("上海"); List<String> lstWeatherInfo = weatherInfo.getString(); // 遍历天气预报信息 for (String string : lstWeatherInfo) { System.out.println(string); System.out.println("------------------------"); } } //支持的行政市 @Test public void Test() { // 创建一个WeatherWS工厂 WeatherWebService factory = new WeatherWebService(); // 根据工厂创建一个WeatherWSSoap对象 WeatherWebServiceSoap weatherWSSoap = factory .getWeatherWebServiceSoap(); // 调用WebService提供的getWeather方法获取南宁市的天气预报情况 ArrayOfString weatherInfo = weatherWSSoap.getSupportProvince(); List<String> lstWeatherInfo = weatherInfo.getString(); // 遍历天气预报信息 for (String string : lstWeatherInfo) { System.out.println(string); System.out.println("------------------------"); } } }
测试结果:
直辖市 ------------------------ 上海 ------------------------ 58367 ------------------------ 58367.jpg ------------------------ 2017-6-4 10:50:51 ------------------------ 21℃/28℃ ------------------------ 6月4日 晴转多云 ------------------------ 东风微风 ------------------------ 0.gif ------------------------ 1.gif ------------------------ 今日天气实况:气温:26℃;风向/风力:东北风 3级;湿度:53%;紫外线强度:强。空气质量:中。 ------------------------ 紫外线指数:强,涂擦SPF大于15、PA+防晒护肤品。 感冒指数:少发,无明显降温,感冒机率较低。 穿衣指数:热,适合穿T恤、短薄外套等夏季服装。 洗车指数:较适宜,无雨且风力较小,易保持清洁度。 运动指数:较适宜,请适当降低运动强度。 空气污染指数:中,易感人群应适当减少室外活动。 ------------------------ 22℃/25℃ ------------------------ 6月5日 中雨 ------------------------ 东南风微风 ------------------------ 8.gif ------------------------ 8.gif ------------------------ 21℃/25℃ ------------------------ 6月6日 阵雨转多云 ------------------------ 南风转西北风微风 ------------------------ 3.gif ------------------------ 1.gif ------------------------ 上海简称:沪,位置:上海地处长江三角洲前缘,东濒东海,南临杭州湾,西接江苏,浙江两省,北界长江入海,正当我国南北岸线的中部,北纬31°14′,东经121°29′。
面积:总面积7823.5平方公里。人口:人口1000多万。上海丰富的人文资源、迷人的城市风貌、繁华的商业街市和欢乐的节庆活动形成了独特的都市景观。游览上海,
不仅能体验到大都市中西合壁、商儒交融、八方来风的氛围,而且能感受到这个城市人流熙攘、车水马龙、灯火璀璨的活力。上海在中国现代史上占有着十分重要的地位,
她是中国XXX的诞生地。许多震动中外的历史事件在这里发生,留下了众多的革命遗迹,处处为您讲述着一个个使人永不忘怀的可歌可泣的故事,成为包含民俗的人文景
观和纪念地。在上海,每到秋祭,纷至沓来的人们在这里祭祀先烈、缅怀革命历史,已成为了一种风俗。大上海在中国近代历史中,曾是风起云涌可歌可泣的地方。在这里荟
萃多少风云人物,散落在上海各处的不同住宅建筑,由于其主人的非同寻常,蕴含了耐人寻味的历史意义。这里曾留下许多革命先烈的足迹。瞻仰孙中山、宋庆龄、鲁迅等故居,
会使您产生抚今追昔的深沉遐思,这里还有无数个达官贵人的住宅,探访一下李鸿章、蒋介石等人的公馆,可以联想起主人那段显赫的发迹史。 ------------------------
以上,就是一个完整的第三方的webservice服务的调用的实例。