一个简单的WebService调用天气预报接口的demo

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jqc874789596/article/details/89445219

很长一段时间没更新博客了,最近刚跳槽成功,工作也慢慢稳定下来了,后面也会陆陆续续更新。

现在的公司用到了WebService,以前没用过,所以学习一下记录下来。

什么是WebService?

首先附上百度百科地址:WebService

简而言之,WebService是一种跨语言跨平台的远程调用技术。我们知道,在我们的日常web开发中,都是我们自己开发接口,自己去调这些接口,但是有种情况:接口不是我们写的,是第三方提供的,我们需要去调其它平台上其它语言的接口,我们就可以用WebService去实现。比如天气预报接口,我们完全可以去调用第三方天气预报接口来完成我们的业务需求。

关于WebService你必须要了解的一些东西?

除了上面的“什么是WebService”,你必须还要了解下面3样东西

  • XML:是一种可扩展编译语言,是SOAP传递数据的基础。
  • SOAP:简单对象访问协议,它是WebService的通讯协议。具体的解释,就是当WebService通过http请求数据与响应信息时,将请求内容与响应内容通过XML格式将数据进行格式化封装并且加上了特定的消息头,这就是SOAP协议。SOAP = http协议+XML数据
  • WSDL:本质上是XML文档,它一般由开发工具自动生成,它描述了WebService接口信息,比如入参,出参,接口名称等等,当我们需要调用第三方WebService接口时,我们必须要知道WebService的WSDL地址。WebService可以有两种方式来暴露他的WSDL地址:第一种.注册到UDDI中,以便被人查找;第二种.直接告诉调用者地址。

开始我们的天气预报demo

先上程序启动类

public class WeatherForecastService {

	public static void main(String[] args) throws RemoteException, ServiceException {
		System.out.println("======程序启动======");
		String result[] = QueryWeatherForecastInfo("杭州");
		for (String r : result)
			System.out.println(r);
		System.out.println("======程序结束======");
	}

	public static String[] QueryWeatherForecastInfo(String cityName) throws RemoteException, ServiceException {
		String[] arr = {};
		return arr;
	}

}

上面的代码片段中,QueryWeatherForecastInfo是我们主要用来调用第三方接口的方法,这里为了演示不报错,暂时返回个空的String数组。

第三方天气预报WebService接口WSDL地址(网上有很多,不一定用我举例的这个):

http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl

打开以后,看到的信息即是WSDL文档对webservice接口的说明信息。

将网页上的文本信息拷贝下来,去掉黑色字体(无用的),如下图。

保存成一个.wsdl格式的文件

将这个.wsdl文件拷贝到我们的src目录下

右键此文件,Web Service -- >  Generate Client

我们会看到自动给我们生成了很多的代码。

我们只需要调其中我们需要的方法就行了。

代码如下:

public class WeatherForecastService {

	public static void main(String[] args) throws RemoteException, ServiceException {
		System.out.println("======程序启动======");
		String result[] = QueryWeatherForecastInfo("杭州");
		for (String r : result)
			System.out.println(r);
		System.out.println("======程序结束======");
	}

	public static String[] QueryWeatherForecastInfo(String cityName) throws RemoteException, ServiceException {
		WeatherWebServiceLocator locator = new WeatherWebServiceLocator();

		// 调用xxLocator对象的getXXPort()方法生成xxSoapBindingStub对象
		WeatherWebServiceSoapStub stud = (WeatherWebServiceSoapStub) locator.getWeatherWebServiceSoap();
		// 输出当天的天气状况
		String[] weather = stud.getWeatherbyCityName("杭州");

		return weather;
	}

}

运行一下,输出如下:

至此,一个调用第三方接口的WebService的demo就完成了

猜你喜欢

转载自blog.csdn.net/jqc874789596/article/details/89445219