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测试类。

     

    现在让我们运行一下:

     

     

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



  • 相关阅读:
    一起学编程(2--认识世界)
    在CentOS 6 中安装 Apache,Mysql, PHP
    JavaScript的代码库
    http get请求获取server返回的应答数据
    Effective C++ 45-48
    通过telent、php深入了解http协议
    UVA 10069 Distinct Subsequences(DP)
    Linux局域网搭建
    iTextSharp之pdfRead(两个文件文本内容的比较,指定页数的pdf截取,水印的添加)
    c#操作pdf文件系列之创建文件
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3230733.html
Copyright © 2011-2022 走看看