您的位置: 飞扬精品软件园 >> 文章中心 >> 软件使用 >> 程序开发 >> 在PHP中利用XML技术构造远程服务

相关文章链接

本类文章排行

最新新闻资讯

    在PHP中利用XML技术构造远程服务

    在PHP中利用XML技术构造远程服务


    • 阅览次数: 文章来源: 原文作者: 整理日期: 2010-07-23


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

    [1] [2] [3] [4] [5]


查看所有评论

网友对在PHP中利用XML技术构造远程服务的评论

网名:
主题:
内容:
验证码: