先放上接口调用地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx
- 新建一个普通的java项目
get_weather_demo2
项目最终结构如下图:
最终目录结构
- 右键项目,选择properties,找到并复制项目的路径,打开cmd命令行,按照之前写的一篇文章《通过网络编程远程调用service接口的demo》中的方式,将目录切到本项目的src文件夹下,输入
wsimport -keep -p demo.cyj.service -verbose http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
这时却报错了,报错如下图:
![](https://img.haomeiwen.com/i7096793/3362f41538eb02db.png)
- 经过一番百度上的搜索和寻找,终于大概知道了错误原因,解决方案:
引用自love小仙的博客。
按照解决方案中所说,浏览器地址改为http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl,将网页上的字符全部复制下来放到本地的一个文本文档中,将文中出现过的两处
<s:element ref="s:schema" /> <s:any />
全部替换为<s:any minOccurs="2" maxOccurs="2" />
然后文件保存为weather.wsdl
。 - 打开cmd命令行,进入本项目的src文件夹下,按照格式:
wsimport -s . yourpath/weather.wsdl
输入命令行,比如我的存放地址:
E:\eclipseOxygenWorkspace\get_weather_demo\src\demo\cyj\weather_test\weather.wsdl
我的命令行就为
wsimport -s . E:\eclipseOxygenWorkspace\get_weather_demo\src\demo\cyj\weather_test\weather.wsdl
![](https://img.haomeiwen.com/i7096793/7e6911c8a22a9c46.png)
这个时候就可以看到,多了一个包,里面有很多java文件。
- 新建一个测试类
WeatherTest.java
:
package demo.cyj.test;
import cn.com.webxml.ArrayOfString;
import cn.com.webxml.WeatherWebService;
import cn.com.webxml.WeatherWebServiceSoap;
public class WeatherTest {
public static void main(String[] args) {
WeatherWebService factory = new WeatherWebService();
WeatherWebServiceSoap weatherWebServiceSoap = factory.getWeatherWebServiceSoap();
ArrayOfString strArray = null;
strArray = weatherWebServiceSoap.getWeatherbyCityName("成都");
System.out.println(strArray.getString());
}
}
跑起来,可以看到控制台打印:
![](https://img.haomeiwen.com/i7096793/fdb72844e94c8692.png)
网友评论