zoukankan      html  css  js  c++  java
  • Web Service实例——天气预报


       上述只是模拟了一下服务端和本地端的通信,但是却没有涉及到真正获取其他网站信息的操作。现在我们通过一个案例,是关于获取天气预报,来实际掌握该项技能。


       原本可以使用MyEclipse自动生成客户端,然后很简单的进行调用就可以了,不过,在建立的过程中,却出现了如下图所示的问题:

    2.3.1构建web Service client

     

       是因为MyEclipse无法解析标签,这个是什么原因,我们可以看一下服务商提供的WSDL的文档,很容易发现:


       xmlns:s=http://www.w3.org/2001/XMLSchema


       这句话正是MyEclipse无法解析的,因为这个原因,我们只能通过命令行建立,并且在构建的过程中还得绑定这个xsd文件。


       其实这个文件是jdk1.4的内容,java已经摒弃没有再使用了,也就造成了其无法通过验证的原因。



       我们现在MyEclipse中构建一个java项目(因为我们只是为了测试,并不一定需要Web工程):

     

    2.3.2构建java项目

    2.3.3添加JAX-WS支持



       之后,打开该项目,进入src目录,通过cmd构建命令:


     wsimport   -p   com.test.client


     -keep   http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?WSDL 


     -b   http://www.w3.org/2001/XMLSchema.xsd


     

     注意:必须一次性写完。

     

     

     -ppackage


     -keepwsdl文档的url


     -b:缺少的schema文件

    2.3.4进入项目的目录src

     

    2.3.5解析wsdl文档

     

    2.3.6解析出现警告完成编译


    注释:解析出现警告,这是正常的情况,不过我们已经将缺失的添加了,所以不必在这方面纠结了。而看一下我们的项目,refresh一下MyEclipse中的项目:

     

    2.3.7文件结构


    我们可以看到,它自动创建了com.test.client包,在包内,有一系列自动生成的java类。至此,我们的客户端已经创建完毕。


     

    现在我们添加一个测试类:WebWeatherClient


     

    package com.test.client;
    
    public class WebWeatherClient {
    	public static void main(String []args){
    		WeatherWebService service = new WeatherWebService();
    		WeatherWebServiceSoap soap = service.getWeatherWebServiceSoap();
    		System.out.println(soap.getWeatherbyCityName("杭州").getString());
    	}
    }
    

    代码段2.3.1测试类。

     

    现在让我们运行一下:

     

     

    可以看到我们已经拿到杭州这个城市的天气信息了。



  • 相关阅读:
    设计模式之依赖倒置原则
    设计模式之里氏替换原则
    设计模式之单一职责原则
    设计模式六大原则
    spring boot 搭建
    OSI(Open System Interconnect) 网络七层协议
    常用经济术语
    Spring Boot入门系列(十八)整合mybatis,使用注解的方式实现增删改查
    Spring Boot入门系列(十四)使用JdbcTemplate操作数据库,配置多数据源!
    Maven快速入门(三)Maven的坐标和仓库
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3230733.html
Copyright © 2011-2022 走看看