仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2047|回复: 20
打印 上一主题 下一主题

[学习教程] JAVA编程:XML-RPC 之 Apache XML-RPC 实例

[复制链接]
愤怒的大鸟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:49:46 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
java比较简单,没有C++的烦琐,但学习时最好有C++为基础.与JSP和SQL起应用,功能强大.apache|xml

王恩建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完成都有好几种,这里我们选择了ApacheXML-RPC。
XML-RPC服务端完成先界说一个复杂营业对象MyHandler,远程客户端将挪用该对象的办法,详细代码以下:


packagenet.sentom.xmlrpc;publicclassMyHandler{publicStringsayHello(Stringstr){return"Hello,"+str;}}

然后界说一个Servlet名叫MyXmlRpcServer,远程客户端经由过程HTTP-POST会见该Servlet。



packagenet.sentom.xmlrpc;importjava.io.IOException;importjava.io.OutputStream;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.xmlrpc.XmlRpcServer;publicclassMyXmlRpcServerextendsHttpServlet{publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{XmlRpcServerxmlrpc=newXmlRpcServer();xmlrpc.addHandler("myHandler",newMyHandler());byte[]result=xmlrpc.execute(request.getInputStream());response.setContentType("text/xml");response.setContentLength(result.length);OutputStreamout=response.getOutputStream();out.write(result);out.flush();}}

必要出格申明是:



xmlrpc.addHandler("myHandler",newMyHandler());

为了便于了解,这里能够当作一般的:



MyHandlermyHandler=newMyHandler();

最初在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:


packagenet.sentom.xmlrpc;importjava.io.IOException;importjava.net.MalformedURLException;importjava.util.Vector;importorg.apache.xmlrpc.XmlRpcClient;importorg.apache.xmlrpc.XmlRpcException;publicclassMyXmlRpcClient{publicstaticvoidmain(String[]args){try{XmlRpcClientxmlrpc=newXmlRpcClient("http://localhost:8080/XMLRPC/MyXmlRpcServer");Vectorparams=newVector();params.addElement("Tom");Stringresult=(String)xmlrpc.execute("myHandler.sayHello",params);System.out.println(result);}catch(MalformedURLExceptione){System.out.println(e.toString());}catch(XmlRpcExceptione){System.out.println(e.toString());}catch(IOExceptione){e.printStackTrace();}}

http://localhost:8080/XMLRPC/MyXmlRpcServer为MyXmlRpcServer的会见URL。



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

再来一个Python客户端完成



importxmlrpcliburl=http://localhost:8080/XMLRPC/MyXmlRpcServer;server=xmlrpclib.Server(url);printserver.myHandler.sayHello(Tom);

net程序员的大部门代码都靠控件拖拽完成的,虽然java也有,但是无论从美观和速度上都没发和.net比。java程序员都是代码完成的,所以java程序员常戏称.net程序员是操作员,呵呵。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-22 15:20

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表