当前位置:   article > 正文

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

webservicesoapstub

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

现在的公司用到了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

先上程序启动类

  1. public class WeatherForecastService {
  2. public static void main(String[] args) throws RemoteException, ServiceException {
  3. System.out.println("======程序启动======");
  4. String result[] = QueryWeatherForecastInfo("杭州");
  5. for (String r : result)
  6. System.out.println(r);
  7. System.out.println("======程序结束======");
  8. }
  9. public static String[] QueryWeatherForecastInfo(String cityName) throws RemoteException, ServiceException {
  10. String[] arr = {};
  11. return arr;
  12. }
  13. }

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

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

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

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

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

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

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

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

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

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

代码如下:

  1. public class WeatherForecastService {
  2. public static void main(String[] args) throws RemoteException, ServiceException {
  3. System.out.println("======程序启动======");
  4. String result[] = QueryWeatherForecastInfo("杭州");
  5. for (String r : result)
  6. System.out.println(r);
  7. System.out.println("======程序结束======");
  8. }
  9. public static String[] QueryWeatherForecastInfo(String cityName) throws RemoteException, ServiceException {
  10. WeatherWebServiceLocator locator = new WeatherWebServiceLocator();
  11. // 调用xxLocator对象的getXXPort()方法生成xxSoapBindingStub对象
  12. WeatherWebServiceSoapStub stud = (WeatherWebServiceSoapStub) locator.getWeatherWebServiceSoap();
  13. // 输出当天的天气状况
  14. String[] weather = stud.getWeatherbyCityName("杭州");
  15. return weather;
  16. }
  17. }

运行一下,输出如下:

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

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/197863
推荐阅读
相关标签
  

闽ICP备14008679号