最近文章更新
- 1966年生产的广州 珠江 SB6-2型 ..
- HD6870/6850全面评测,让你大饱眼..
- 百万现金刚入门 中国7大奢华私人..
- 罕见4G希捷酷鱼系类万转SCSI服务..
- IBM 6x86MX PR333 CPU
- 采用MC68000 CPU的进口老计算机主..
- 1989年IBM-XT机软驱
- BC3型饱和标准电池拆解
- JUKO ST
- Kingston 品牌的CPU
- YAMAHA 719
- intel 30线 内存条
- intel mmx cpu和主板
- 首款xHCI 1.0正式版标准USB 3.0控..
- 《极品飞车:地下狂飙》纹理MOD视..
- USB接口加扩展子卡:影驰神秘GTX..
- 阿里巴巴将发布浏览器 核心不是W..
- 黄仁勋大秀NVIDIA LOGO纹身
- Google Earth上的奇特卫星图片
- 开火!讯景限量版HD 5970详细测试..
相关文章链接
本类文章排行
最新新闻资讯
本周下载排行
- ArcSoft TotalMedia Theatre 3 P..
- Windows 7 Build 7600 16385 RTM..
- 《姗姗来迟软件光盘+飞扬PE工具箱..
- MSDN Windows 7 RTL 7600 Ultima..
- Windows 7 Home Premium (x86) -..
- Windows Virtual PC (x86) - (Mu..
- MSDN Windows 7 Language Pack X..
- Windows 7 Language Pack (x64) ..
- Windows 7 Starter (x86) - DVD ..
- Windows 7 Professional (x86) -..
- Windows 7 Language Pack (x86) ..
- Windows 7 Home Premium (x64) -..
- Windows XP Mode (x86, x64) - (..
- 7127.0.090507-1820_x86fre_clie..
- DMG2ISO
本月下载排行
- ArcSoft TotalMedia Theatre 3 P..
- Windows 7 Build 7600 16385 RTM..
- 《姗姗来迟软件光盘+飞扬PE工具箱..
- MSDN Windows 7 RTL 7600 Ultima..
- MSDN Windows 7 Language Pack X..
- Windows 7 Home Premium (x86) -..
- Windows 7 Language Pack (x64) ..
- Windows 7 Professional (x86) -..
- 7127.0.090507-1820_x86fre_clie..
- Windows 7 Professional (x64) -..
- Windows 7 Starter (x86) - DVD ..
- Windows Virtual PC (x86) - (Mu..
- Windows 7 Ultimate (x64) - DVD..
- Lenovo Windows 7 Ultimate OEM ..
- Windows 7 Home Premium (x64) -..
- 阅览次数: 文章来源: 原文作者: 整理日期: 2010-07-23
在PHP中利用XML技术构造远程服务
在PHP中利用XML技术构造远程服务
可能包含一个结构,或者可能包含一个结构,具体由过程调用是否成功决定。结构与xml请求中的一样,元素的语法如下:
<fault> <value> <struct> <member> <name>faultcode</name> <value><int>4</int></value> </member> <member> <name>faultstring</name> <value><string>error!</string></value> </member> </struct> </value> </fault> |
四、基于xml_rpc的web服务
利用xml_rpc构造和使用服务是很方便的。企业为自己提供的各种服务部署xml_rpc服务器,用户、客户软件和客户企业就可以使用这种服务构造出高端服务或者面向最终用户的应用。这种提供更有效、廉价和优质服务的竞争将极大地提高应用服务的质量。
但这里还存在一些问题有待解决,例如怎样编目、索引、搜索web上的服务?uddi试图解决这个问题,不过这个标准并不简单,而且业界对它的反应也尚未明了。然而,在企业内部应用xml_rpc不仅能够改善代码的可重用性,而且还会带来一种全新的分布式计算模式,在此后的数年中它必将成为一种重要的知识财富。xml_rpc的发展从解决分布式计算问题以及成为服务式web的基本层面开始,从而获得了一个非常好的开端,其后必将紧随着人们对该标准的热衷。既然如此,现在就让我们来看看xml_rpc的实际应用吧!
在php中应用xml_rpc
对于提供web服务来说,php是一种非常理想的语言。我们只需编写好php代码然而把它放到一个合适的位置,就立即有了一个可通过url“调用”的服务。php中的xml_rpc实现可能复杂也可能简单,但我们拥有许多种选择。这里我们选用的是来自useful information company的xml_rpc实现,它的代码和文档可以从http://xmlrpc.usefulinc.com/下载。
这个xml_rpc实现的基本类涉及两个文件:
xmlrpc.inc:包含xml_rpc的php客户端所需要的类
xmlrpcs.inc:包含xml_rpc的php服务器所需要的类
客户端
◆编写xml_rpc客户端意味着:
◆创建一个xml_rpc请求消息
◆设置xml_rpc参数
◆创建一个xml_rpc消息
◆发送消息
◆获得应答
◆解释应答
请看下面这个例子:
<?php $f=new xmlrpcmsg(examples.getstatename,array (new xmlrpcval(14, "int"))); $c=new xmlrpc_client("/rpc2", "betty.userland.com", 80); $r=$c->send($f); $v=$r->value(); if (!$r->faultcode()) { print "状态代码". $http_post_vars["stateno"] . "是" . $v->scalarval() . "<br>"; print "<hr>这是服务器的应答<br><pre>" . htmlentities($r->serialize()). "</pre><hr>\n"; } else { print "错误: "; print "代码: " . $r->faultcode() . " 原因: " .$r->faultstring()."<br>"; } ?> |
在这个例子中,我们先创建了一个调用“examples.getstatename”方法的xml_rpc消息,并传递了一个类型为“int”值为14的整数参数。然后,我们创建了一个描述待调用url(路径、域和端口)的客户。接着,我们发送了消息,接收应答对象并检查错误。如果不存在错误,我们就显示结果。
编写rpc客户程式时要用到的主要函数如下:
创建客户用:
$client=new xmlrpc_client($server_path, $server_hostname, $server_port); |
发送消息的方法是:
$response=$client->send($xmlrpc_message); |
他返回的是xmlrpcresp的一个实例。我们所传递的消息是xmlrpcmsg的实例,他用如下方法创建:
$msg=new xmlrpcmsg($methodname, $parameterarray); |
methodname是待调用的方法(过程)的名字,parameterarray是xmlrpcval对象的php数组。例如:
$msg=new xmlrpcmsg("examples.getstatename", array(new xmlrpcval(23, "int"))); |
xmlrpcval对象能用如下形式创建:
<?php $myval=new xmlrpcval($stringval); $myval=new xmlrpcval($scalarval, "int" | "boolean" | "string" | "double" | "datetime.iso8601" | "base64"); $myval=new xmlrpcval($arrayval, "array" | "struct"); ?> |