利用java webservice调用天气预报实践

最近要和其他业务系统进行数据交换,选择了webservice方案,于是查了一下网上的用法。首先是做一个天气的查询例子,看着挺简单,可实际动手做起来发现坑很多,费了半天劲终于调通了,于是记录下来。

1,在eclipse里新建一个java项目,在src里添加一个文件,命名为WeatherWebService.wsdl。

 

2,在浏览器中访问地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl这个是天气预报的webservice描述地址,复制里面的内容,注意从<wsdl:definitions 标签开始复制一直到<wsdl:definitions标签结束。粘贴到java项目的文件WeatherWebService.wsdl中。

3,此时重点来了,选中文件,右键选择web service-generate client会弹出以下窗口

 

如果没有错误提示直接点击Finish按钮即可完成引用。但往往是会有一个错误提示无法完成

4 这时候就会自动生成引用的相关代码:

 

5 这时候就可以写一个调用的测试代码了,新建一个测试类,在main函数里编写一个得到北京天气的测试代码。

package cn.com.test;
import java.rmi.RemoteException;
import javax.xml.rpc.ServiceException;
import cn.com.WebXml.WeatherWebService;
import cn.com.WebXml.WeatherWebServiceLocator;
import cn.com.WebXml.WeatherWebServiceSoap;
public class TestWeathers {

   public static void main(String[] args) {
   WeatherWebService service1=new WeatherWebServiceLocator();
   WeatherWebServiceSoap serviceSoap = null;
    try {
       serviceSoap = service1.getWeatherWebServiceSoap();
    } catch (ServiceException e) {
       e.printStackTrace();
   }
    String[] cityweather = null;
    String[] city1={"北京","上海","深圳","广州"};
     try {
         cityweather = serviceSoap.getWeatherbyCityName("北京");//不输入默认为上海市
     } catch (RemoteException e) {
         e.printStackTrace();
    }
    for (String s : cityweather) {
        System.out.println(s);
     }
  }
}

结果:

 

posted @   zsq_fengchen  阅读(2158)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示