调用天气预报Web Service客户端

(结合JAVA的WebService支持.pdf进行理解)

http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl打开后另存为atherWebService.wsdl,然后将文件放到cxf的bin目录下,执行dos进入cxf的bin目录下,运行wsdl2java atherWebService.wsdl ,会生成文件与bin目录下)

一、用cxf的wsdl2java工具生成客户端代码(使用的是apache-cxf-2.2.3)

二、书写客户端调用服务:

/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements. See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership. The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

package cn.com.webxml;

import java.util.ArrayList;
import java.util.List;

import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import javax.xml.ws.soap.SOAPBinding;

 

public final class Client {

    private static final QName SERVICE_NAME
        = new QName("http://WebXml.com.cn/", "WeatherWebServiceSoap");
    private static final QName PORT_NAME
        = new QName("http://WebXml.com.cn/", "WeatherWebServiceSoapPort");


    private Client() {
    }

    public static void main(String args[]) throws Exception {
        Service service = Service.create(SERVICE_NAME);
        // Endpoint Address
        String endpointAddress = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx";

        // Add a port to the Service
        service.addPort(PORT_NAME, SOAPBinding.SOAP11HTTP_BINDING, endpointAddress);
       
        WeatherWebServiceSoap hw = service.getPort(WeatherWebServiceSoap.class);
        List<String> list = hw.getWeatherbyCityName("深圳").getString();
        for(String str:list){
         System.out.println(str); 
        }
    }
}

 

 

 

 

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

1、

- < wsdl:portType name =" WeatherWebServiceSoap ">
- < wsdl:operation name =" getSupportCity ">
  < wsdl:documentation xmlns:wsdl =" http://schemas.xmlsoap.org/wsdl/ "> <br /><h3>查询本天气预报Web Services支持的国内外城市或地区信息</h3><p>输入参数:byProvinceName = 指定的洲或国内的省份,若为ALL或空则表示返回全部城市;返回数据:一个一维字符串数组 String(),结构为:城市名称(城市代码)。</p><br /> </ wsdl:documentation >
  < wsdl:input message =" tns:getSupportCitySoapIn " />
  < wsdl:output message =" tns:getSupportCitySoapOut " />
  </ wsdl:operation >
个人理解:
 <wsdl:portType name="WeatherWebServiceSoap"> -》WeatherWebServiceSoap接口
   <wsdl:operation name="getSupportCity">-》              getSupportCity  接口中方法
 <wsdl:input message="tns:getSupportCitySoapIn" />   输入参数,soap消息getSupportCitySoapIn
-》
- < wsdl:message name =" getSupportCitySoapIn ">
  < wsdl:part name =" parameters " element =" tns:getSupportCity " /> getSupportCity为参数
  </ wsdl:message >
 <wsdl:output message="tns:getSupportCitySoapOut" /> 输出参数,soap消息getSupportCitySoapOut
-》
- < wsdl:message name =" getSupportCitySoapOut ">
  < wsdl:part name =" parameters " element =" tns:getSupportCityResponse " />
  </ wsdl:message >
getSupportCity参数:
- < s:element name =" getSupportCity ">
- < s:complexType >
- < s:sequence >
  < s:element minOccurs =" 0 " maxOccurs =" 1 " name =" byProvinceName " type =" s:string " />
  </ s:sequence >
  </ s:complexType >
  </ s:element >

你可能感兴趣的:(apache,xml,Web,webservice,SOAP)