源代码如下:
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服务客户端的重要工具,用于调用基于SOAP协议的Web服务。本文将深入探讨如何利用Java和Axis2库来实现这一功能,同时结合提供的代码示例进行详细解析。 首先,Web服务是一种通过网络进行通信的...
本文将详细讲解如何使用Axis2来发布Web服务以及如何生成客户端代码来调用这些服务。 首先,让我们了解发布Web服务的过程: 1. **创建WebService**:在Axis2中,可以通过编写一个简单的Java类并暴露其方法作为Web...
axis2客户端调用axis1服务接口 调用方式 使用RPC方式调用WebService,为了防止冲突可以增加 // 与weblogic的lib冲突配置 System.setProperty("javax.xml.stream.XMLInputFactory", ...
标题中的“Axis2 Axis WebService Web 服务”指的是Apache Axis2,它是一个强大的Web服务框架,主要用于构建和部署Web服务。Axis2是Apache SOAP(Simple Object Access Protocol)项目的第二代实现,专门设计用于...
1. **创建ServiceStub对象**:用于封装服务调用逻辑。 2. **构建请求数据**:根据服务接口的需求,构造相应的请求参数。 3. **调用服务方法**:通过ServiceStub对象的方法调用远程服务。 4. **处理响应结果**:解析...
解压后,仔细阅读文档,编译并运行示例代码,可以帮助你更好地理解如何在Axis2客户端中实现NTLM认证的Web服务调用。 总之,理解NTLM认证机制和如何在Axis2中使用它对于开发需要与Windows域集成的应用至关重要。通过...
在描述中,“用框架cxf调用axis2提供的接口服务的一个简单例子”,意味着我们将探讨一个简单的CXF客户端如何与Axis2服务端进行交互。这通常涉及到以下步骤: 1. **创建CXF客户端**:首先,我们需要创建一个CXF...
【Axis发布调用服务】是关于使用Apache Axis框架创建和部署Web服务的教程,适合初学者。Apache Axis是一个开源的Java库,遵循SOAP规范,使Java应用服务器具备提供Web服务的能力。 **一、Web服务简介** Web服务是一...
Axis2提供了一种高效、灵活且可扩展的方式来实现服务端和客户端的服务调用。当涉及到“axis2客户端调用服务端,带用户身份认证”时,我们主要关注的是如何在 Axis2 客户端中添加安全机制,确保只有经过验证的用户...
在这个教程中,我们将学习如何使用Apache Axis2将一个简单的类转换为对外提供服务的Web服务,并生成WSDL文件,以及如何调用这些服务。 首先,我们需要了解提供的类`Person`,它包含`name`、`age`和`gender`三个属性...
在这个过程中,Eclipse提供了便捷的开发环境,AXIS2则简化了Web服务的创建和调用。理解并掌握这些步骤,你就可以自如地在Java环境中使用WebService进行远程通信了。在实际项目中,可能还需要考虑安全性、性能优化...
Axis2客户端是用于与远程Web服务交互的工具,它允许开发者通过SOAP(简单对象访问协议)消息来调用Web服务提供的功能。这个过程通常包括以下几个步骤: 1. **创建Stub**: Axis2客户端通过WSDL(Web服务描述语言)...
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客户端进行服务调用,包括AXIS2的基本概念、配置、服务引用以及调用流程。 **AXIS2简介** AXIS2是Apache软件基金会开发的一个强大的Web服务引擎,它支持多种协议,如SOAP 1.1...
在IT行业中,尤其是在Web服务开发领域,Axis是一个广泛使用的开源工具,它允许...通过WSDL2JAVA工具,我们可以快速生成所需的Java代码,简化开发流程,同时利用Axis提供的丰富功能来处理Web服务调用的各种复杂情况。
- 生成服务代理:使用WSDL(Web服务描述语言)和Mex( Metadata Exchange)端点,Apache Axis2可以生成Java客户端代码,这些代码包含了调用WCF服务所需的所有信息。 - 配置Axis2:将生成的Java客户端代码导入到...
本主题将深入探讨如何使用Java的Axis2框架调用由C#开发的Web服务来获取XML结果。以下是相关知识点的详细解释: 1. **Web Service**: Web服务是一种通过HTTP协议进行通信的应用程序接口(API),允许不同系统间的...