• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

XML-RPC 之 Apache XML-RPC 实例

servlet/jsp 搞代码 7年前 (2018-06-18) 162次浏览 已收录 0个评论

作者:王恩建来源:http://www.sentom.netxml-RPC 是工作在 Internet 上的远程过程调用协议。通俗点讲,就是使用 HTTP 协议交互,交互的载体是 XML 文件。XML-RPC 具体的规范说 明请参考这里。
图片来自XML-RPC官方网站

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

http://www.gaodaima.com/40651.htmlXML-RPC 之 Apache XML-RPC 实例

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&quot;);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&#8217;;server = xmlrpclib.Server(url);print server.myHandler.sayHello(‘Tom’);

欢迎大家阅读《XML-RPC 之 Apache XML-RPC 实例》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:XML-RPC 之 Apache XML-RPC 实例

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址