网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > JAVA > Java&XML > XMLBeans > 技术分享 使用XML-RPC来访问Web服务  

技术分享 使用XML-RPC来访问Web服务

2005-09-26  作者:BitsCN整理  来源:中国网管联盟  点评 投稿 收藏


  <!--[if !supportLists]-->1.  <!--[endif]-->XML-RPC
  
  <!--[if !supportLists]-->a)    <!--[endif]-->原理:XML-RPC是以XML的方式来发送RPC调用,他使用HTTP作为传输协议,把需要发送的请求和请求的结果封装到HTTP的消息当中。
  
  由于RPC调用也是方法调用,只是被调用的一方不是在本地而已,虽然是这样,但是不能改变的是调用的本质,对于调用方,他需要提供所调用的方法和方法的参数,而对于被调用方,她通过解释调用方的请求,执行响应的调用,并将结果返回。这就是方法调用的本质。
  
  RPC只是在调用和返回之间增加了网络传输和编码解码部分,而XML-RPC则是规定了编码和解码必须使用XML格式,而网络传输必须使用HTTP协议,仅此而已。
  
  <!--[if !supportLists]-->2.  <!--[endif]-->XML-RPC的请求和响应格式
  
  <!--[if !supportLists]-->a)    <!--[endif]-->请求:
  
  POST /rpchandler HTTP/1.0
  
  User-Agent: AcmeXMLRPC/1.0
  
  Host: xmlrpc.example.com
  
  Content-Type: text/xml
  
  Content-Length: 165
  

网管u家u.bitscn@com


  <?xml version="1.0"?>
  
  <methodCall>
  
  <methodName>getCapitalCity</methodName>
  
  <params>
  
  <param>
  
  <value><string>England</string></value>
  
  </param>
  
  </params>
  
  </methodCall>
  
  <!--[if !supportLists]-->b)    <!--[endif]-->响应:
  
  HTTP/1.1 200 OK
  
  Date: Sun, 29 Apr 2001 12:08:58 GMT
  
  Server: Apache/1.3.12 (Unix) Debian/GNU PHP/4.0.2
  
  Connection: close
  
  Content-Type: text/xml
  
  Content-length: 133
  
  <?xml version="1.0"?>
  
  <methodResponse>
  
  <params>
  
  <param>
  
  <value><string>Michigan</string></value>
  
  </param>
  
  </params>
  
  </methodResponse>
  
  <!--[if !supportLists]-->c)    <!--[endif]-->错误:

网管论坛bbs_bitsCN_com


  
  HTTP/1.1 200 OK
  
  Date: Sun, 29 Apr 2001 12:08:58 GMT
  
  Server: Apache/1.3.12 (Unix) Debian/GNU PHP/4.0.2
  
  Connection: close
  
  Content-Type: text/xml
  
  Content-length: 133
  
  <?xml version="1.0"?>
  
  <methodResponse>
  
  <fault>
  
  <value>
  
  <struct>
  
  <member>
  
  <name>faultCode</name>
  
  <value><int>802</int></value>
  
  </member>
  
  <member>
  
  <name>faultString</name>
  
  <value><string>Unknown country, 'Engand'.</string></value>
  
  </member>
  
  </struct>
  
  </value>
  
  </fault>
  
  </methodResponse>
  
  <!--[if !supportLists]-->3.  <!--[endif]-->XML-RPC实例
  
  <!--[if !supportLists]-->a)    <!--[endif]-->发送请求:
中国网管论坛bbs.bitsCN.com

  
  <!--[if !supportLists]-->           i.       <!--[endif]-->说明:使用XmlRpcClient可以发送请求,在请求当中我们需要提供所需要调用的方法名,以及方法参数,且参数需包装到一个集合当中。
  
  <!--[if !supportLists]-->          ii.       <!--[endif]-->代码:
  
  XmlRpcClient client = new XmlRpcClient("http://127.0.0.1:6666");
  
  Vector<String> pars = new Vector<String>();
  
  pars.addElement("nick");
  
  Object result = client.execute("service.hello", pars);
  
  System.out.println("The Result is : " + result);
  
  <!--[if !supportLists]-->b)    <!--[endif]-->发布服务:
  
  <!--[if !supportLists]-->           i.       <!--[endif]-->说明:通过WebServer我们可以很方便的发布服务。其中添加到addHandler()当中的实例就是服务体,而“service”就表示服务名称。当请求到达时,他会根据请求的名称与查找服务体,然后在返回的实例上调用execute()方法。
  

网管联盟bitsCN@com


  <!--[if !supportLists]-->          ii.       <!--[endif]-->代码:
  
  WebServer server = new WebServer(6666);
  
  server.addHandler("service", new Service());
  
  server.start();
  
  public class Service implements XmlRpcHandler {
  
  public Object execute(String methodName, Vector args) throws Exception {
  
  if ("service.hello".equals(methodName)) {
  
  return hello((String) args.get(0));
  
  }
  
  return "";
  
  }
  
  private String hello(String name) {
  
  return "Hello " + name;
  
  }
  
  }

TAGs   服务   访问   分享   技术   if   调用   supportLists   endif      
 上一篇:Java解析XML文档——dom解析xml   下一篇:在Web应用中使用XML文件配置数据源
相关文章列表
技术分享 使用XML-RPC来访问Web服务 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
1.Java解析XML文档——dom解析xml
2.用Java生成XML
3.Java API for XML Parsing(JAXP)演进
4.使用SAX和XSLT实现复杂数据转换(组图)
5.jdom读数据库生成XML及读XML插入数据库
6.javascript+xml实现二级下拉菜单二
7.如何使用JSTL标签做页面资源国际化
8.Ajax: 构建动态的 Java 应用程序(图)
9.XML文件DTD路径解析——in Eclipse(图)
10.如何实现XML+XSL+javascript数据排序
最新推荐文章:
1.Digester解析XML文档Sample
2.Java解析XML文档――dom解析xml
3.Ajax: 构建动态的 Java 应用程序(图)
4.技术分享 使用XML-RPC来访问Web服务
5.使用SAX和XSLT实现复杂数据转换(组图)
6.模式验证结构-JAXP 1.3 的特性
7.Java API for XML Parsing(JAXP)演进
8.使用web.xml控制Web应用的行为一
9.具有邮编区号查询功能的js+xml版
10.Ajax铺设了更好的开发Web应用道路(图)
网管论坛交流:
·不疯魔不成活
·令你大开眼界的真正标准化机房,已整理重
·为赈灾,女孩舍身拍“裸照”
·Windows Server 2003服务器群集创建和配
·exchange2k3全套官方资料
·双儿一周岁了。。。特殊的礼物来啦。。
·存储备份技术版块守则
·无盘技术交流区守则
·DOS命令基础大全之命令详解<作者吐血
·Windows XP 操作系统默认设置需要注意的