WebService(实践)——天气预报WebService

  上篇通过一个自己写的一个简单实例,了解了一下什么是WebService,这篇我们通过调用天气预报的WebService来获取所在城市的天气情况,进一步加深对WebService的理解。

一、天气预报的wsdl地址

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

  直接在cmd命令窗口通过wsimport导出服务,报错:




  运行结果显示,使用wsimport工具直接生成客户端代码会抛异常, 无法生成客户端代码, 只是因为我们要调用的WebService是用.net写的,这个是Java调用net的webservice都有的问题,这个问题的解决办法如下:

在火狐或者360中右键另存为后缀名为wsdl的wsdl文件




二、通过wsimpot生成客户端代码

  将WeatherWS.wsdl保存到D:\test\wb\wh目录下面,然后通过wsimport进行生成客户端的操作

导出命令:D:\test\wb\wh>wsimport -d d:/test/wb/wh/ -keep  WeatherWS.wsdl

  出现下图说明导出成功




三、客户端测试

  将d:/test/wb/wh下的整个cn文件夹拷贝到一个java项目中去,整体结构如下:




  写客户端测试:


package com.tgb.zll.test;

import java.util.List;

import org.junit.Test;

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

public class weatherTest {
	
	@Test
	public void testGetWeatherByCity(){
		WeatherWS factory=new WeatherWS();
		WeatherWSSoap wsoap=factory.getWeatherWSSoap();
		ArrayOfString weatherInfo=wsoap.getWeather("廊坊", null);
		
		List<String> weatherList=weatherInfo.getString();
		for (String string : weatherList) {
			System.out.println(string);
		}
		
	}

}



  测试结果:





四、小结

  通过天气预报的WebService实例,应该进一步了解整个WebService的作用与操作流程!即:

   1、提供WebService接口

   2、通过WebService接口导出客户端

     3、调用接口对应的方法。

    一个相对来说较好的WebService服务,应该是从wsdl编写开始的,即所谓的契约优先开发模式!所以我们如果想要提供对外的服务,并且基于契约优先开发的话,流程应该如下:

   1、编写schema规范

   2、引用编写好的schema规范,编写对应的wsdl文件

   3、通过wsdl生成wsdl服务端,主要是保留接口

   4、提供wsdl接口的实现类

   5、服务WebService服务

   6、别人通过你提供的WebService服务,导出对应的客户端代码!

下篇我们按照这个流程来写一个简单完整的WebService服务




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值