首页 > 代码库 > Java调用免费的WebService示例【天气预报】【国内手机号码归属地查询】

Java调用免费的WebService示例【天气预报】【国内手机号码归属地查询】

1.免费的WebService地址:http://www.webxml.com.cn/zh_cn/index.aspx

 提供了例如:天气预报,手机归属地查询等很多Web服务。

2.调用天气预报服务示例:

 使用JDK自带的wsimport命令生成客户端代码:

 wsimport -keep http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl 

发现抛出如下异常:

技术分享

后来在网上找到了http://blog.sina.com.cn/s/blog_4c925dca01014y3r.html这篇博客解决了问题,就是将网络上的WSDL文件先保存到本地例如E:\WSDL\weather.wsdl然后将文件中所有 <s:element ref="s:schema" /><s:any /> 替换成 <s:any minOccurs="2" maxOccurs="2"/>即可。

再次使用wsimport命令生成客户端代码,这次使用本地修改好的WSDL文件来生成命令如下:

wsimport -keep E:\WSDL\weather.wsdl

可以看到在当前目录下生成了很多Java类,将这些类复制到eclipse项目如图:

技术分享

下面编写一个测试类来调用生成的客户端代码,获取天气预报信息

package cn.com.weatcher;

import java.util.List;

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

public class WeatherClient {

 public static void main(String[] args) {
  WeatherWS fs = new WeatherWS();
  WeatherWSSoap soap = fs.getWeatherWSSoap();
  ArrayOfString aString = soap.getWeather("深圳", null);
  List<String> string = aString.getString();
  System.out.println(string);
 }
}

 

控制台输入结果如下:

[广东 深圳, 深圳, 2419, 2015/01/31 16:15:18, 今日天气实况:气温:16℃;风向/风力:东北风 2级;湿度:62%, 空气质量:暂无;紫外线强度:弱, 太阳镜指数:需要。白天根据户外光线情况佩戴太阳镜。
穿衣指数:较舒适。建议穿薄外套或牛仔裤等服装。
旅游指数:适宜。天气较好,丝毫不会影响您出行的心情。
运动指数:较适宜。气温较低,推荐您进行室内运动。
洗车指数:较适宜。无雨且风力较小,易保持清洁度。
化妆指数:保湿。请选用中性保湿型霜类化妆品。
感冒指数:较易发。天较凉,增加衣服,注意防护。
空气污染指数:暂无。
紫外线指数:弱。辐射较弱,涂擦SPF12-15、PA+护肤品。
舒适度指数:舒适。白天不冷不热,风力不大。
, 1月31日 多云, 13℃/18℃, 无持续风向微风, 1.gif, 1.gif, 2月1日 多云, 13℃/21℃, 无持续风向微风, 1.gif, 1.gif, 2月2日 多云, 14℃/22℃, 无持续风向微风, 1.gif, 1.gif, 2月3日 多云, 14℃/19℃, 无持续风向微风, 1.gif, 1.gif, 2月4日 多云, 15℃/21℃, 无持续风向微风, 1.gif, 1.gif]
3.国内手机号码归属地查询WEB服务
http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl

执行如下命令:

wsimport -keep http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl

将生成的客户端代码复制到Eclipse项目中如图:

技术分享

编写测试类测试:

 

package cn.com.mobile;

import cn.com.webxml.MobileCodeWS;
import cn.com.webxml.MobileCodeWSSoap;

public class MobileTest {

 public static void main(String[] args) {
  MobileCodeWS mobileCodeWS = new MobileCodeWS();
  MobileCodeWSSoap mobileCodeWSSoap = mobileCodeWS.getMobileCodeWSSoap();
  String mobileCodeInfo = mobileCodeWSSoap.getMobileCodeInfo("18617054380", null);
  System.out.println(mobileCodeInfo);
 }
}

 

控制台输入如下信息:

13430448863:广东 深圳 广东移动神州行卡

Java调用免费的WebService示例【天气预报】【国内手机号码归属地查询】