读书人

XML-RPC for PHP简介及施用

发布时间: 2012-08-02 11:35:26 作者: rapoo

XML-RPC for PHP简介及使用

?

new xmlrpcval(123,"int");   //将123作为XML-RPC int类型
new xmlrpcval(123,"string"); //将123作为XML-RPC string类型
new xmlrpcval(123);//如果没有第二个参数,系统默认将其作为string类型

new xmlrpcval( //XML-RPC array类型
array(
new xmlrpcval("string1"),
new xmlrpcval("string2"),
new xmlrpcval("string3"),),"array");

new xmlrpcval( //XML-RPC struct类型
array( "name"=>new xmlrpcval("codebean","string"),
"age"=>new xmlrpcval(34,"int"),
"address"=>new xmlrpcval(
array( "street"=>new xmlrpcva("xiaoyinxilu","string"), "city"=>new xmlrpcval("beijing","string") ),
"struct")),
"struct");

//请求服务器的examples.getStateName方法,参数是123
$message = new xmlrpcmsg("examples.getStateName",array(new xmlrpcval(123,"int")));

//在服务端www.test.com上面的interface.php路径建立相关链接。    
$client = nw xmlrpc_client("/interface.php","ww.test.com",80);

new  xmlrpcresp(xmlrpcval $val);//在服务端生成一个xmlrpcresp对象
new xmlrpcresp(0,int $errcode,string $err_string);//服务端出错时,可以返回该类型。

function test($xmlrpcval){
return new xmlrpcresp($val);
}

//客户端可以访问examples.myTest来实际访问test()函数
new xmlrpc_server(
array(
"examples.myTest"=>array("function"=>"test")
));

<?php
include './lib/xmlrpc.inc';
include './lib/xmlrpcs.inc';

function foo($xmlrpcmsg){
$par1 = $xmlrpcmsg->getParam(0); //获取第一个参数
$val1 = $par1->scalarval(); //转换成PHP对应的值

$par2 = $xmlrpcmsg->getParam(1); //获取第二个参数
$val2 = $par2->scalarval(); //转换成PHP对应的值

$par3 = $xmlrpcmsg->getParam(2); //获取第二个参数

//转换成PHP对应的值
for($i=0; $i<$par3->arraySize(); $i++){
$v = $par3->arrayMem($i);
$val[] = $v->scalarVal()."<br>";
}

$msg1 = new xmlrpcval(strrev($val1),"string");
$msg2 = new xmlrpcval(strrev($val2),"int");

$msg = new xmlrpcval(array($msg1,$msg2),"array"); //返回一个array

return new xmlrpcresp($msg);
}

new xmlrpc_server(
array(
"example.test"=>array("function"=>"foo"),
)
);
?>

<?php 
include './lib/xmlrpc.inc';
$params = array(
new xmlrpcval("hello rpc","string"),
new xmlrpcval(123,"int"),
new xmlrpcval(
array(
new xmlrpcval("test","string"),
new xmlrpcval(456,"int")
),
"array"),
);

$message = new xmlrpcmsg("example.test",$params);
$client = new xmlrpc_client("/interface.php", "my.rpcserver.com" ,'80');
//$client->setDebug(2);
$res = $client->send($message,30);

if(!$res->faultCode()){
$v= $res->value();
for($i=0; $i<$v->arraySize(); $i++){
$vv = $v->arrayMem($i);
echo $vv->scalarVal()."<br>";
}
}else{
echo $res->faultcode().":".$res->faultString()."<br>";
}
?>

?


读书人网 >XML SOAP

热点推荐