XML-RPC 之 Apache XML-RPC 实例

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情


作者:王恩建来源:http://www.sentom.net

XML-RPC 是工作在 Internet 上的远程过程调用协议。通俗点讲,就是使用 HTTP 协议交互,交互的载体是 XML 文件。XML-RPC 具体的规范说 明请参考 这里


图片来自XML-RPC官方网站

XML-RPC 规范定义了六种数据类型,下表是这六种数据类型与 Java 的数据类型对应表。

XML-RPCJava
<i4> 或 <int>int
<boolean>boolean
<string>java.lang.String
<double>double
<dateTime.iso8601>java.util.Date
<struct>java.util.Hashtable
<array>java.util.Vector
<base64>byte[ ]

XML-RPC 规范的各种平台都有具体实现,XML-RPC 规范的 Java 实现都有好几种,这里我们选择了 Apache XML-RPC

XML-RPC 服务端实现
先定义一个简单业务对象 MyHandler,远程客户端将调用该对象的方法,具体代码如下:

package net.sentom.xmlrpc;

public class MyHandler {
	
	public String sayHello(String str){
		return "Hello," + str;
	}
}

然后定义一个 Servlet 名叫 MyXmlRpcServer,远程客户端通过 HTTP-POST 访问该 Servlet。

package net.sentom.xmlrpc;
import java.io.IOException;
import java.io.OutputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.xmlrpc.XmlRpcServer;

public class MyXmlRpcServer extends HttpServlet {
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		XmlRpcServer xmlrpc = new XmlRpcServer();
		xmlrpc.addHandler("myHandler", new MyHandler());
		byte[] result = xmlrpc.execute(request.getInputStream());
		response.setContentType("text/xml");
		response.setContentLength(result.length);
		OutputStream out = response.getOutputStream();
		out.write(result);
		out.flush();
	}
}

需要特别说明是:

xmlrpc.addHandler("myHandler", new MyHandler());

为了便于理解,这里可以看成普通的:

MyHandler myHandler = new MyHandler();

最后在web.xml文件中加入以下几行:

<servlet>
    	<servlet-name>MyXmlRpcServer</servlet-name>
    	<servlet-class>net.sentom.xmlrpc.MyXmlRpcServer</servlet-class>
</servlet>
<servlet-mapping>
    	<servlet-name>MyXmlRpcServer</servlet-name>
    	<url-pattern>/MyXmlRpcServer</url-pattern>
</servlet-mapping>
XML-RPC 客户端实现
客户端相对简单一些,先来一个 Java 客户端实现 MyXmlRpcClient:

package net.sentom.xmlrpc;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.Vector;
import org.apache.xmlrpc.XmlRpcClient;
import org.apache.xmlrpc.XmlRpcException;

public class MyXmlRpcClient {
	public static void main(String[] args) {
		try {
			XmlRpcClient xmlrpc = new XmlRpcClient("http://localhost:8080/XMLRPC/MyXmlRpcServer");
			Vector params = new Vector();
			params.addElement("Tom");
			String result = (String) xmlrpc.execute("myHandler.sayHello",params);
			System.out.println(result);
		} catch (MalformedURLException e) {
			System.out.println(e.toString());
		} catch (XmlRpcException e) {
			System.out.println(e.toString());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

http://localhost:8080/XMLRPC/MyXmlRpcServer 为 MyXmlRpcServer 的访问URL。

String result = (String) xmlrpc.execute("myHandler.sayHello",params);

再来一个 Python 客户端实现

import xmlrpclib
url = 'http://localhost:8080/XMLRPC/MyXmlRpcServer';
server = xmlrpclib.Server(url);
print server.myHandler.sayHello('Tom');
<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-9232855773311077&dt=1112239954046&format=300x250_as&output=html&color_bg=FFFFFF&color_text=000000&color_link=0000FF&color_url=008000&color_border=FFFFFF&u_h=768&u_w=1024&u_ah=738&u_aw=1024&u_cd=32&u_tz=480&u_his=8&u_java=true" frameborder="0" width="300" scrolling="no" height="250" allowtransparency="65535">
Java RPC通信机制之XML-RPCApache XML-RPC 3.0开发简介 Java RPC通信机制之XML-RPCApache XML-RPC 3.0开发简介摘要:XML-RPC是一种简单的,轻量级的通过HTTP协议进行RPC通信的规范。本文以Apache XML-RPC 3.0为基础,对XML-RPC的基本原理及Apache XML-RPC 3.0的主要特性进行了讨论和分析。正文:一、概述XML-RPC是一种简单的,轻量级的通过HTTP协议进行R 阅读详情

相关推荐

xmlRpc的完整例子

上次我求一个xrpc的完整例子没有找到。现在从我自己做了一个,如果有使用ws、xmlrpc来做系统接口的同学,可以参考下

Apache Maven简介与安装、使用用途

Apache Maven简介与使用指南 Apache Maven是一个开源的项目管理及自动构建工具,主要用于Java项目。它基于POM(项目对象模型)概念,通过中央信息管理项目的构建、依赖和文档。Maven简化了依赖管理(自动处理jar包及其版本)、项目构建(编译、打包等)和报告生成。安装可通过Eclipse插件或官网下载,需配置环境变量和本地仓库。Maven与Ant不同,强调约定优于配置,内置生命周期管理,支持多模块项目。其核心配置文件pom.xml可定义项目结构、依赖及插件,快照版本(如1.0-SNAP

u010804417的博客 7881

apache XML-RPC 实现

commons-logging-1.1.jar ws-commons-util-1.0.2.jar xmlrpc-client-3.1.3.jar xmlrpc-common-3.1.3.jar xmlrpc-server-3.1.3.jar

org.apache.maven.plugins:maven-resources-plugin:2.4.3

一、发现问题 建立maven项目后,pom.xml在显示红叉,鼠标放上去,显示Execution default-testResources of goal org.apache.maven.plugins:maven-resources-plugin:2.4.3错误。 二、原因分析 缺少maven-resources-plugin-2.4.3.jar或该文件下载不正确,可到reposi

JAVA前线技术专栏 5万+

Apache XML-RPC入门:使用java搭建服务端和客户端

1、简介   XML-RPC的全称是XML Remote Procedure Call,即XML远程方法调用。它是一套允许运行在不同操作系统、不同环境的程序实现基于Internet过程调用的规范和一系列的实现。这种远程过程调用使用http作为传输协议,XML作为传送信息的编码格式。Xml-Rpc的定义尽可能的保持了简单,但同时能够传送、处理、返回复杂的数据结构。   XML-RPC是工作在In...

mmdev 223

java 调用webservice接口

RPC调用webservice接口

weixin_42471125的博客 1066

【转】Java RPC通信机制之Apache XML-RPC 3.0开发简介

Java RPC通信机制之Apache XML-RPC 3.0开发简介 摘要:XML-RPC是一种简单的,轻量级的通过HTTP协议进行RPC通信的规范。本文以Apache XML-RPC 3.0为基础,对XML-RPC的基本原理及Apache XML-RPC 3.0的主要特性进行了讨论和分析。正文:一、概述XML-RPC是一种简单的,轻量级的通过HTTP协议进行RPC通信的规范。一个XML-RPC消息就是一个请求体为XML的HTTP-POST请求,被调用的方法在服务器端执行并将执行结果以XML格式编码后返回

zysee的专栏 732

Apache xml-rpc

<br /> xml-rpc是一套允许运行在不同操作系统、不同环境的程序实现基于internet过程调用的规范和一系列的实现。这种远程过程调用使用http作为 传输协议,xml作为传送信息的编码格式。xml-rpc的定义尽可能的保持了简单,但同时能够传送、处理、返回复杂的数据结构。<br />1,客户程序<br />     Apache xml-rpc提供两种客户类:<br />     org.apache.xmlrpc.XmlRpcClient:使用java.net.URLConne

laughing_yao的专栏 554

使用apache-xmlrpc-3.1.3 编写Java XML-RPC Client

使用apache-xmlrpc-3.1.3 编写Java XML-RPC Client,具体如下: XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); config.setServerURL(new URL("http://localhost:8080")); //注:如果被调用的方法返回值为void或null,需设定次

kdevn的专栏 3759

XML-RPC技术

-------------本文参考刘洋,魏飞等编著的《精通jboss---EJB与webservice开发精解》 XML-RPC技术的实质就是用XML描述你所需要的远程调用方法,并通过HTTP来传送这些XML数据 Apache XML-RPC实现工具:可以到以下网址下载:http://download.csdn.net/detail/u013998070/8563005 一:独立安装和启动:

u013998070的专栏 1457

RPC之java应用

什么是RPC?Remote Procedure Call,远程过程调用。也就是说,调用过程代码并不是在调用者本地运行,而是要实现调用者与被调用者二地之间的连接与通信。比较严格的定义是:     Xml代码   Remote procedure call (RPC) is a protocol that allows a computer program running

空杯心态_虚怀若谷 200

RPC:远程过程调用协议

        RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。   基本简介  ...

yanguz的专栏 951

Dubbo

Dubbo

qq_61714717的博客 120

webservices客户端以及服务端

客户端 package com.business.webservice.client; import javax.xml.namespace.QName; import org.apache.axis2.AxisFault; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.client....

weixin_42597509的博客 275
上一篇: jUDDI 简单安装使用
下一篇: 日文系统不能安装Jbuilder的问题解决(InstallAnyWhere问题)
zmxj
博客等级 码龄24年 25粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值