欢迎光临
我们一直在努力

XML-RPC 之 Apache XML-RPC 实例-JSP教程,Java技巧及代码

建站超值云服务器,限时71元/月

作者:王恩建来源: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);

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » XML-RPC 之 Apache XML-RPC 实例-JSP教程,Java技巧及代码
分享到: 更多 (0)

相关推荐

  • 暂无文章