初学xmlrpc

来源:互联网 发布:js json.parse 编辑:程序博客网 时间:2024/05/20 01:45
2010-04-22 13:08



client.php:

<?php
require_once "lib/Xmlrpc/xmlrpc.inc";
require_once "lib/Xmlrpc/xmlrpcs.inc";
$client = new xmlrpc_client('http://localhost/webservice/xmlrpc/server.php');
           //创建一个实例 调用server.php里的add方法,传递2个参数
             $msg = new xmlrpcmsg("add", array(new xmlrpcval(5, "int"),new xmlrpcval(8, "int")));
           //服务器返回xmlrpcresp的一个实例
           $retval = $client->send($msg);

               if ($retval->faultCode())
              {
                   print_r("发生一个错误: ");                   
                   print_r("原因: " . htmlspecialchars($retval->faultString()));        
              }

               else

              {
                 //xmlrpcresp //xmlrpcval
               echo $retval->value()->scalarval();
               }
?>

server.php:

<?php
require_once "lib/Xmlrpc/xmlrpc.inc";
require_once "lib/Xmlrpc/xmlrpcs.inc";

// $add_sig = array(array($xmlrpcString, $xmlrpcInt, $xmlrpcInt));
// $add_doc = "Add the two integer together";

function add($params)
{
                //引入用户错误代码值
               // global $xmlrpcerruser;
                //返回一个PHP数组
                $val = php_xmlrpc_decode($params);
                $ret = $val[0] + $val[1];
                //因为客户端send 方法返回需要一个xmlrpcresp类型,所以包装该返回值
                return new xmlrpcresp(new xmlrpcval($ret, "int"));
}

//创建一个xmlrpc_server的实例:
$server = new xmlrpc_server(array(

               "add" => array(

                        "function" => "add",

                         //"signature" => $add_sig,

                       // "docstring" => $add_doc

                             )
                                  )
                          );

?>

访问 http://localhost/webservice/xmlrpc/client.php 输出: 13