`

使用RPC方式调用WebService

 
阅读更多

调用WebService接口的方法有两种,

第一种就是RPC方式,很复杂

第二种用命令生成客户端代码方式调用,比较方便

 

使用RPC方式调用WebService的步骤如下:

1)创建RPCServiceClient对象

2)创建EndpointReference对象,并指定要访问WebService的URL(不包含wsdl)

3)创建QName对象,并指定要调用的WebService方法

4)创建描述WebService方法参数值的Object[]对象

5)创建描述WebService方法返回值类型的Class[]对象

6)使用RPCServiceClient类的invokeBlocking方法调用WebService方法

 

注意:invokeBlocking方法返回一个Object[]对象,如果方法返回单值,可以引用Object[]对象的第一个元素,也就是Object[0]

 

package client;
import org.apache.axis2.rpc.client.RPCServiceClient;
import javax.xml.namespace.QName;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;

public class MyClient {
	public static void main(String[] args) throws AxisFault {
		/** 调用webser中nextNum方法 **/
		
		//第一步 创建RPCServiceClient对象
		RPCServiceClient serviceClient = new RPCServiceClient();
		Options options = serviceClient.getOptions();
		//第二步 远程wsdl文件 
		EndpointReference target = new EndpointReference(
				"http://localhost:8080/axis2/services/JaxWSImplService");
		options.setTo(target);
		//第三步 命名空间和方法
		QName addEntry = new QName("http://impl.service.jax/", "sayHello");
		//第四步 传入方法的参数,没有的话定义空数组
		Object[] addEntryArgs = new Object[]{ "shanshanbox.com" };
		//第五步 方法的返回值,可以不存在
		Class[] classes = new Class[] {String.class};
		
		Object[] invokeBlocking = serviceClient.invokeBlocking(addEntry, addEntryArgs, classes);
		
		System.out.println(invokeBlocking[0]);
		
		/** 调用webser中nextNum方法 **/
		addEntry = new QName("http://impl.service.jax/", "nextNum");
		classes = new Class[] { int.class };
		invokeBlocking = serviceClient.invokeBlocking(addEntry, new Object[]{ }, classes);
		System.out.println(invokeBlocking[0]);
	}
}

 

使用RPC方式调用WebService应注意如下几点:

1)客户端需要引用必要的jar包,反正我是把axis2的lib文件夹下所有的jar文件引入

2)上面的代码中使用RPCServiceClient类的invokeBlocking方法调用WebService方法。

invokeBlocking方法有三个参数,其中第一个类型是QName对象,表示要调用的方法;第二个

参数表示要调用的WebService方法的参数值,参数类型为Object[];第三个参数表示WebService

方法的返回值类型的Class对象,参数类型为Class[],当方法没有参数时,invokeBlocking方法的

第二个参数值不能为null。要使用new Object[]()

3)调用的WebService没有返回值,应使用RPCService类的invokeRobust方法,该方法只有两个参数

4)在创建QName对象时,QName类的构造方法的第一个参数表示WSDL的命名空间,也就是<wsdl definitions>元素的targetNamespa属性值

5)如果出现如下这种错误

Exception in thread "main" org.apache.axis2.AxisFault: The ServiceClass object does not implement the required method in the following form: OMElement sayHello(OMElement e)

请检查一下你的services.xml配置文件是否正确,如下格式

 <service name="simpleService">
 
    <description>    
        Web Service例子    
    </description>
    
    <parameter name="ServiceClass">    
        com.hous.service.SimpleService
    </parameter>
    <!-- 这里没有正确配置 -->
    <operation name="sayHello">
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"    
            class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />  
    </operation>
    
    <operation name="nextNum">
		<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"    
            class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />  
    </operation>
</service>    

 

Game Over You Are Win 

 

 

分享到:
评论

相关推荐

    WebServices服务接口调用---基于rpc方式应用

    本主题将深入探讨基于RPC(Remote Procedure Call)方式的WebServices应用,特别是使用sun-jaxws.xml配置文件的方法。 RPC是一种使客户端能够执行远程服务器上的方法的技术,它隐藏了底层的网络通信细节,使得调用...

    axis2客户端调用axis1服务接口

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

    Delphi调用WebService的实例(非常经典)[参考].pdf

    "Delphi调用WebService的实例(非常经典)" 在 Delphi 中调用 WebService 是一种非常经典的实例。下面我们将详细介绍 Delphi 调用 WebService 的相关知识点。 首先, Delphi 调用 WebService 需要了解基本概念。...

    webservice服务发布编写

    使用RPC方式调用WebService(有返回结果) /** * 构造方法, 指定IP、端口号,在调用方法时可不指定 * @param server 服务器IP地址 * @param port 端口号 * @param path WebService访问路径 * @param namespace ...

    JAVA调用WebService所需要的JAR

    要使用Java来调用WebService,开发者需要引入特定的JAR(Java Archive)文件来支持相关功能。以下将详细介绍Java调用WebService所需的关键JAR文件以及相关的知识点。 1. **SOAP协议**:Java调用WebService通常采用...

    java 调用 webService工具类

    Java开发者通常会根据WSDL文件生成客户端代码,然后使用这些代码来调用WebService。JAX-WS提供`wsimport`工具,可以自动生成对应的客户端 stub 类。 5. **工具类设计**: 这个名为`javaCallwebService`的工具类很...

    用C#写的winform调用webservice天气预报小软件教程

    在本教程中,我们将学习如何使用C#语言在WinForm中调用WebService来实现一个天气预报小软件。这个小软件可以根据城市名称获取天气信息,并将其显示在WinForm窗体上。 C#语言基础 在开始学习本教程之前,需要具备...

    使用spring远程调用服务端接口实现WebService功能

    在Java EE平台上,Spring框架提供了一种强大的方式来实现远程服务调用,特别是通过其HttpInvokerServiceExporter组件来实现基于HTTP的WebService功能。这个技术允许客户端和服务端通过HTTP协议进行通信,实现远程...

    axis客户端调用webservice

    java axis客户端调用webservice,可应用于ofbiz框架。 解决网络上共享代码两次调用后会出现timeout的BUG

    java调用webservice接口.zip

    本教程将深入探讨如何使用Axis库来实现在Java中调用WebService接口。Axis是一个开源的Java SOAP栈,它提供了从Java代码中创建和消费Web服务的能力。 **一、什么是WebService?** WebService是一种基于XML的协议,它...

    xfire调用webservice

    xfire调用webservice xfire是一款基于Java的开源WebService框架,它提供了一个简单、灵活和高效的方式来开发和部署WebService。xfire可以与多种类型的WebService结合使用,如SOAP、REST、XML-RPC等。xfire还提供了...

    利用AXIS调用webservice所需JAR包

    本篇文章将深入探讨如何利用AXIS调用WebService,以及所需的JAR包及其作用。 首先,理解AXIS的基本概念至关重要。Apache Axis是Apache软件基金会开发的一个开源项目,它是一个用于构建Web服务和客户端的工具集。...

    myeclipse下java调用webservice项目例子

    【标题】"myeclipse下java调用webservice项目例子"涉及到的是在Java开发环境中,使用MyEclipse IDE来创建并调用Web服务的过程。MyEclipse是Eclipse的一个扩展,特别适合Java企业级应用的开发,包括Web服务。本项目...

    最实用的axis调用webService接口所需的jar包和案例

    确保这些jar包在项目的类路径中,才能正确地使用Axis调用WebService接口。 三、调用流程 1. 创建代理对象:首先,根据WSDL文件生成Java服务代理类。可以使用Axis的wsdl2java工具,或者直接在Eclipse等IDE中导入WSDL...

    详解axis调用webservice实例

    标题中的“详解axis调用webservice实例”表明我们将探讨如何使用Apache Axis库来调用Web服务。Apache Axis是一个开源工具,它允许Java开发者创建、部署和使用Web服务。在这个实例中,我们会有机会看到实际的Java代码...

    Flex调用Webservice及java程序

    2. **调用Webservice** - **通过SOAP**:在Flex中,我们可以使用`mx.rpc.soap.*`包中的类来创建SOAP客户端,如`WebService`类。首先,我们需要定义一个接口,该接口对应于Web服务的WSDL(Web服务描述语言)文档中的...

    java调用webservice(20211103125800).rar

    Java调用WebService是一种常见的在Java应用中集成外部服务或系统的方式。WebService是一种基于XML的、平台和语言无关的标准,允许不同系统之间的数据交换。在这个场景中,我们将深入探讨Java如何利用各种技术栈来...

    Java调用WebService接口的方法

    本文将深入探讨如何使用Java调用WebService接口,以实例分析有参方法Add的使用技巧。 首先,我们需要了解WebService的基础知识。WebService是一种基于开放标准(如SOAP、WSDL和UDDI)的Web应用程序,它能够通过HTTP...

    客户端调用webservice所需完整jar包

    当我们谈论“客户端调用WebService”时,通常是指一个客户端应用程序通过特定的API与远程服务器上的WebService接口进行交互,获取或发送数据。在这个场景下,标题提到的“客户端调用WebService所需完整jar包”是一组...

    XMLRPC调用webservice

    使用`Zend_XmlRpc_Client`创建客户端,调用服务。 服务端示例(server.php): ```php require_once 'Zend/XmlRpc/Server.php'; function add($a, $b) { return $a + $b; } $server = new Zend_XmlRpc_Server();...

Global site tag (gtag.js) - Google Analytics