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:广东 深圳 广东移动神州行卡