建站学 - 轻松建站从此开始!

建站学-个人建站指南,网页制作,网站设计,网站制作教程

当前位置: 建站学 > 网站开发 > PHP教程 >

如何在php中开发xml_rpc服务和客户程序(4)

时间:2011-03-15 10:04来源: 作者: 点击:
第一种形式创建的是xmlrpc字符串值。第二种形式创建的是描述值和类型的值。第三种形式通过在数组之类的结构中组合其他xmlrpc值创建复杂的对象,例如: <?php$myarray=new xmlrpcval(array(new xmlrpcval(tom), new

第一种形式创建的是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。

(责任编辑:admin)

织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片