当前位置 : 主页 > 网页制作 > Nodejs >

WebService开发--手机号码归属地查询和天气预报查询

来源:互联网 收集:自由互联 发布时间:2021-06-24
序言: 在很多站点网页的最上方,我们经常会看到一个非常人性化的设计---天气预报。在一些网站上,我们输出一个手机号码,就能查出这个号码的归属地。虽然功能看起来不是特别复

序言:

在很多站点网页的最上方,我们经常会看到一个非常人性化的设计---天气预报。在一些网站上,我们输出一个手机号码,就能查出这个号码的归属地。虽然功能看起来不是特别复杂,但是要收集大量的数据。对于一个公司来说,单独去维护一些这样的功能显然是不合适的。但是通过WebService,就能轻易的实现这些功能

一、查找WEB服务

在网上,可以搜到大量的WEB服务。http://www.webxml.com.cn/zh_cn/index.aspx这里面收集了许多免费WEB服务,手机号码归属地和天气预报的wsdl文档都可以在这个网站上查询。

二、编写天气预报的WebService

打开上文提到的网址,找到天气预报WEB服务,点进去以后会有一个“服务说明的”超链接。点进去以后看到的内容,大家都很熟悉了,就是我们需要的wsdl文档。 复制wsdl的地址,现在eclipse里面的Web Service浏览器内看下是否能访问
在WeatherWSSoap里面有个getWeather方法,body点add输入一个城市名字,就会得到相应城市的天气状况。
上篇,已经介绍了利用JDK中wsimport工具生成客户端代码,本篇就不再赘述。 新建一个web项目,生成客户端代码
好恐怖!竟然出现了错误,这是因为Service端是用.net写的。用java调的话会出现这种错误。解决的方法是需要改一下wsdl文档中的一段代码。 我们通过url的方式生成代码,显然没法修改wsdl文档,需要我们 把wsdl文档保存到本地 。进行修改后,再利用JDK使用路径的方式进行生成。 在我们的项目上右击new >>>new file 建一个weather.wsdl
再次打开我们查询到的wsdl文档的页面, 右击查看源文件 。全部复制,粘贴到我们建好了的weather.wsdl文件中保存。这时可能会报错,没有报错的话, ctrl+f 查找<s:element ref="s:schema" /><s:any /> 替换成 <s:any minOccurs="2" maxOccurs="2"/>

再次生成一下,这次把url改为本地路径,继续执行生成命令,这次有警告,先不要理它
刷新下我们的项目,会看到生成后客户端代码,写一个测试类,看看是否能获取到天气预报信息
package cn.com.webxml.test;

import java.util.List;

import cn.com.webxml.ArrayOfString;
import cn.com.webxml.WeatherWS;
import cn.com.webxml.WeatherWSSoap;

public class WeatherWSTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		WeatherWS weatherWS = new WeatherWS();
		WeatherWSSoap weatherWSSoap = weatherWS.getWeatherWSSoap();
		ArrayOfString weather = weatherWSSoap.getWeather("天津", null);
		List<String> list = weather.getString();
		System.out.println(list);
	}

}
这里,我们需要调用一个方法,这个方法可以通过wsdl中<wsdl:service name="WeatherWS">标签获取


运行mian方法,查看控制台,就会得到相应城市的天气情况

三、编写归属地查询WebService

经过上面的demo,再写一个归属地查询的WebService应该是轻而易举了。经过测试,发现这次利用jdk通过url生成客户端代码,不会报错。在wsdl文档中<wsdl:service name="xxx">找到调用的类。


网友评论