最近文章更新
- 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技术构造远程服务
第一种形式创建的是xmlrpc字符串值。第二种形式创建的是描述值和类型的值。第三种形式通过在数组之类的结构中组合其他xmlrpc值创建复杂的对象,例如:
<?php $myarray=new xmlrpcval(array(new xmlrpcval("tom"), new xmlrpcval("dick"),new xmlrpcval("harry")), "array"); $mystruct=new xmlrpcval(array( "name" => new xmlrpcval("tom"), "age" => new xmlrpcval(34, "int"), "geek" => new xmlrpcval(1, "boolean")),"struct"); ?> |
应答对象是xmlrpcresp类型,通过调用客户对象的send方法获得。在服务器端,我们能通过如下方式创建xmlrpcresp类型的对象:
$resp=new xmlrpcresp($xmlrpcval); |
而在客户端,则使用如下方法从应答获取xmlrpcval:
$xmlrpcval=$resp->value(); |
接下来我们就能用下面这种方式获取描述应答结果的php变量:
$scalarval=$val->scalarval(); |
对于复杂的数据类型,有两个函数非常有用,这两个函数都在xmlrpc.inc内:
$arr=xmlrpc_decode($xmlrpc_val); |
该函数返回一个php数组,其中包含了xmlrpcval变量$xmlrpc_val之内的数据,这些数据已被转换成php本身具有的变量类型。
$xmlrpc_val=xmlrpc_encode($phpval); |
该函数返回一个xmlrpcval类型的值,其中包含了$phpval描述的php数据。对于数组和结构,此方法能够进行递归分析。注意,这里不存在对非基本数据类型(如base-64数据,或日期-时间数据)的支持。
服务器端
利用xmlrpcs.inc提供的类编写服务非常简单。要创建一个服务,我们按照如下方式创建xmlrpc_server的实例:
<?php $s=new xmlrpc_server( array("examples.myfunc" => array("function" => "foo"))); ?> |
传递给xmlrpc_server构造函数的是个联合数组的联合数组。过程“examples.myfunc”调用“foo”函数,由于这个原因foo被称为方法句柄。
编写方法句柄非常简单。下面是个方法句柄的骨架:
<?php function foo ($params) { global $xmlrpcerruser; // 引入用户错误代码值 // $params是个xmlrpcval对象的数组 if ($err) { // 错误条件 return new xmlrpcresp(0, $xmlrpcerruser+1, // 用户错误1 "error!"); } else { // 成功 return new xmlrpcresp(new xmlrpcval("fine!", "string")); } } ?> |
能看到,程式检查了错误,如存在错误则返回错误(从$xmlrpcerruser+1开始);否则如果一切正常,则返回描述操作成功信息的xmlrpcresp。