• (转)JAVA 调用Web Service的三种方法


    1.使用HttpClient
    用到的jar文件:commons-httpclient-3.1.jar
    方法:
    预先定义好Soap请求数据,可以借助于XMLSpy Professional软件来做这一步生成。

    复制代码
    String soapRequestData = "<?xml version="1.0" encoding="utf-8"?>" +
        
    "<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">" +
          "<soap12:Body>" +
           
    " <getCountryCityByIp xmlns="http://WebXml.com.cn/">" +
          "    <theIpAddress>219.137.167.157</theIpAddress>" +
         
    "   </getCountryCityByIp>" +
        
    "  </soap12:Body>" +
        
    "</soap12:Envelope>";
    复制代码

    然后定义一个PostMethod,这时需要指定web服务的Url;

    PostMethod postMethod = new PostMethod(“http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx”);

    然后把Soap请求数据添加到PostMethod中

    byte[] b = soapRequestData.getBytes("utf-8");
    InputStream is 
    = new ByteArrayInputStream(b,0,b.length);
    RequestEntity re 
    = new InputStreamRequestEntity(is,b.length,"application/soap+xml; charset=utf-8");
    postMethod.setRequestEntity(re);

    最后生成一个HttpClient对象,并发出postMethod请求

    HttpClient httpClient = new HttpClient();
    statusCode 
    = httpClient.executeMethod(postMethod);
    String soapRequestData 
    =  postMethod.getResponseBodyAsString();

    soapRequestData就是调用web服务的Soap响应数据,是xml格式的,可以通过解析soapRequestData来获得调用web服务的返回值。

    2.使用Xfire
    用到的jar文件xfire-all-1.2.4.jar, jdom-1.0.jar
    方法:
    定义一个Client对象,指定web服务的wsdl的地址

    Client c = new Client(new URL(“http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?wsdl”));

    调用Client对象的invoke方法,指定web服务的方法名,和参数,返回值是一个Object型的数组。
    下面代码调用getVersionTime方法,这个方法没有参数用所以后一个参数使用new Object[0]。

    Object[] results = c.invoke(“getVersionTime”, new Object[0]);

    3.使用axis2
    下载axis2-1.4
    方法:
    打开控制台,进入axis2-1.4/bin目录

    wsdl2java.bat -uri http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?wsdl -p ws.clinet.axis2


    上述命令执行完后,会在当前目录下生成一个src目录,在src ws clinet axis2目录里生成XXXXCallbackHandler.java和XXXXStub.java两个文件。
    wsdl2java 会根据wsdl文件生成web服务的调用接口,参数类,返回值的类。
    在调用webservice的时候直接实例化一个XXXXStub的对象,然后调用web服务的方法就可以了。

    4. 总结
    针对某种工具搭建的Web Service服务可能有与其对应的更简单的调用方法,在这里没有做描述,上述的调用web服务的方法是通用的。
    上述三种方法中使用httpclient应该是比较灵活,但是开发效率低,难度大,使用Xfire和axis2比较容易,开发速度快,但是axis2通用性不好,有的web服务用axis2不好用。httpclient和Xfire通用性比较好,鉴于以上特点推荐使用Xfire。

    原文:http://www.cnblogs.com/sun_moon_earth/archive/2009/02/03/1383308.html

  • 相关阅读:
    my first android test
    VVVVVVVVVV
    my first android test
    my first android test
    my first android test
    ini文件
    ZZZZ
    Standard Exception Classes in Python 1.5
    Python Module of the Week Python Module of the Week
    my first android test
  • 原文地址:https://www.cnblogs.com/wangjiyuan/p/javawebzhuan1.html
Copyright © 2020-2023  润新知