快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

XML-RPC 之 Apache XML-RPC 实例



作者:王恩建来源:http://www.sentom.netXML-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 xmlrpcliburl = \\\'http://localhost:8080/XMLRPC/MyXmlRpcServer\\\';server = xmlrpclib.Server(url);print server.myHandler.sayHello(\\\'Tom\\\');




返回类别: 教程
上一教程: 浅谈 Java 中 this 的使用
下一教程: struts 学习笔记(一)--搭建环境

您可以阅读与"XML-RPC 之 Apache XML-RPC 实例"相关的教程:
· 使用XML-RPC来访问WEB服务
· JSP+XML构架网站的实例
· PHP4在WINXP下IIS和APACHE2服务器上的安装实例
· 基于XMLHTTP的简朴实例
· PHP和JAVA的XML-RPC中文问题解决办法
    微笑服务 优质保证 索取样品