`

Axis2调用DotNET Web服务的例子

阅读更多
源代码如下:
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.soap.SOAP11Constants;
import org.apache.axis2.Constants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;

/**
* 测试WebService
* @author
* @history 2008-4-16
*/
public class ServiceMain {
    private static EndpointReference targetEPR = new EndpointReference(
            "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx");

    public static void main(String[] args) throws Exception {
        ServiceClient sender = new ServiceClient();
        sender.setOptions(buildOptions());
        OMElement result = sender.sendReceive(buildParam());
        System.out.println(result);
    }

    private static OMElement buildParam() {
        OMFactory fac = OMAbstractFactory.getOMFactory();
        OMNamespace omNs = fac.createOMNamespace("http://WebXml.com.cn/", "");
        OMElement data = fac.createOMElement("getSupportCity", omNs);
        OMElement inner = fac.createOMElement("byProvinceName", omNs);
        inner.setText("All");
        data.addChild(inner);
        return data;
    }

    private static Options buildOptions() {
        Options options = new Options();
        options.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
        options.setAction("http://WebXml.com.cn/getSupportCity");
        options.setTo(targetEPR);
        // enabling MTOM in the client side
        // options.setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
        return options;
    }
}

解释:
1. 这个网站:http://www.webxml.com.cn/有比较多的免费Web Service可以调用,基本上全部是用DotNET编写的。
本例子中使用到的Web Service端点(EndPoint)为:
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx
端点(EndPoint)可以近似理解为一个URI,通过这个URI来定位Web Service。Java平台下端点格式大致为:
http://localhost:8080/axis2/WeatherService
在EndPoint后面添加?wsdl即可查询该Web Service的WSDL。例如:
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl

2. 代码中使用Axis2的Client API访问Web Service,Axis2 Client API最主要的是ServiceClient和OptionsClient,当然还有个RPC相关Client,不过用得比较少。
ServiceClient通过设置Options来设置属性,如EndPoint、传输协议、SOAP消息版本等。
注意一点:options.setAction("http://WebXml.com.cn/getSupportCity");这一句是必须的,相当于告诉Web Service要调用的是哪个方法。setAction的参数字符串构成为:targetNamespace对应的URI + operation,这两者在WSDL中都有描述(WSDL中的Operation相当于一个方法):
<wsdl:definitions targetNamespace="http://WebXml.com.cn/">
……
<wsdl:operation name="getSupportCity">

其实有另外的元素明确说明了setAction的参数应该是何值,如下所示:
<wsdl:operation name="getSupportCity">
<soap:operation soapAction="http://WebXml.com.cn/getSupportCity" style="document"/>
    <wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
    <wsdl:output>
<soap:body use="literal"/>
</wsdl:output>

本例中调用的为Operation为getSupportCity,可以接收一个输入参数:byProvinceName = 指定的洲或国内的省份,若为ALL或空则表示返回全部城市;返回数据:一个一维字符串数组 String(),结构为:城市名称(城市代码)。

3. 程序运行需要Axis2相关的包,输出结果为XML文档结构的字符串。访问以下URL同样是调用了该Web Service的该方法:
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity?byProvinceName=All
如果要更改省的名字,在代码中:inner.setText("All");一句中进行修改即可。
分享到:
评论

相关推荐

    Java+Axis2调用Web Services 网络接口

    Java和Axis2是开发Web服务客户端的重要工具,用于调用基于SOAP协议的Web服务。本文将深入探讨如何利用Java和Axis2库来实现这一功能,同时结合提供的代码示例进行详细解析。 首先,Web服务是一种通过网络进行通信的...

    axis2发布webservice和调用axis2服务接口

    本文将详细讲解如何使用Axis2来发布Web服务以及如何生成客户端代码来调用这些服务。 首先,让我们了解发布Web服务的过程: 1. **创建WebService**:在Axis2中,可以通过编写一个简单的Java类并暴露其方法作为Web...

    axis2客户端调用axis1服务接口

    axis2客户端调用axis1服务接口 调用方式 使用RPC方式调用WebService,为了防止冲突可以增加 // 与weblogic的lib冲突配置 System.setProperty("javax.xml.stream.XMLInputFactory", ...

    axis2 axis webservice web 服务

    标题中的“Axis2 Axis WebService Web 服务”指的是Apache Axis2,它是一个强大的Web服务框架,主要用于构建和部署Web服务。Axis2是Apache SOAP(Simple Object Access Protocol)项目的第二代实现,专门设计用于...

    axis2调用WebService详细说明

    1. **创建ServiceStub对象**:用于封装服务调用逻辑。 2. **构建请求数据**:根据服务接口的需求,构造相应的请求参数。 3. **调用服务方法**:通过ServiceStub对象的方法调用远程服务。 4. **处理响应结果**:解析...

    axis2客户端调用带Ntlm认证例子

    解压后,仔细阅读文档,编译并运行示例代码,可以帮助你更好地理解如何在Axis2客户端中实现NTLM认证的Web服务调用。 总之,理解NTLM认证机制和如何在Axis2中使用它对于开发需要与Windows域集成的应用至关重要。通过...

    myService_purpose1sv_cxf调用axis2的接口服务_接口服务_

    在描述中,“用框架cxf调用axis2提供的接口服务的一个简单例子”,意味着我们将探讨一个简单的CXF客户端如何与Axis2服务端进行交互。这通常涉及到以下步骤: 1. **创建CXF客户端**:首先,我们需要创建一个CXF...

    Axis发布调用服务

    【Axis发布调用服务】是关于使用Apache Axis框架创建和部署Web服务的教程,适合初学者。Apache Axis是一个开源的Java库,遵循SOAP规范,使Java应用服务器具备提供Web服务的能力。 **一、Web服务简介** Web服务是一...

    axis2客户端调用服务端,带用户身份认证

    Axis2提供了一种高效、灵活且可扩展的方式来实现服务端和客户端的服务调用。当涉及到“axis2客户端调用服务端,带用户身份认证”时,我们主要关注的是如何在 Axis2 客户端中添加安全机制,确保只有经过验证的用户...

    基于 Apache Axis2 将上述类的方法对外提供 Web 服务,生成 WSDL 文件,以及调用服务

    在这个教程中,我们将学习如何使用Apache Axis2将一个简单的类转换为对外提供服务的Web服务,并生成WSDL文件,以及如何调用这些服务。 首先,我们需要了解提供的类`Person`,它包含`name`、`age`和`gender`三个属性...

    AXIS2远程调用WebService示例(Eclipse+AXIS2)工具和所用包.rar

    在这个过程中,Eclipse提供了便捷的开发环境,AXIS2则简化了Web服务的创建和调用。理解并掌握这些步骤,你就可以自如地在Java环境中使用WebService进行远程通信了。在实际项目中,可能还需要考虑安全性、性能优化...

    axis2客户端调用webService接口,精简jar包

    Axis2客户端是用于与远程Web服务交互的工具,它允许开发者通过SOAP(简单对象访问协议)消息来调用Web服务提供的功能。这个过程通常包括以下几个步骤: 1. **创建Stub**: Axis2客户端通过WSDL(Web服务描述语言)...

    axis2 webservices 例子

    4. **创建Axis2客户端**:在客户端,我们需要使用Axis2来调用这个Web服务。首先,我们需要生成客户端 stubs。这可以通过Axis2的`wsdl2java`工具完成,给定服务的WSDL地址。 5. **使用客户端**:生成的客户端 stubs ...

    axis2例子 webservice axis2 示例

    axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例

    AXIS2客户端调用实例

    在本文中,我们将深入探讨如何使用AXIS2客户端进行服务调用,包括AXIS2的基本概念、配置、服务引用以及调用流程。 **AXIS2简介** AXIS2是Apache软件基金会开发的一个强大的Web服务引擎,它支持多种协议,如SOAP 1.1...

    Axis客户端调用代码

    在IT行业中,尤其是在Web服务开发领域,Axis是一个广泛使用的开源工具,它允许...通过WSDL2JAVA工具,我们可以快速生成所需的Java代码,简化开发流程,同时利用Axis提供的丰富功能来处理Web服务调用的各种复杂情况。

    axis2调用WCF

    - 生成服务代理:使用WSDL(Web服务描述语言)和Mex( Metadata Exchange)端点,Apache Axis2可以生成Java客户端代码,这些代码包含了调用WCF服务所需的所有信息。 - 配置Axis2:将生成的Java客户端代码导入到...

    java基于Axis2调用C#开发的web service获取xml结果

    本主题将深入探讨如何使用Java的Axis2框架调用由C#开发的Web服务来获取XML结果。以下是相关知识点的详细解释: 1. **Web Service**: Web服务是一种通过HTTP协议进行通信的应用程序接口(API),允许不同系统间的...

Global site tag (gtag.js) - Google Analytics