PHP XMLRPC实践

时间:14-06-17 栏目:测试开发技术 作者:乐测网 评论:0 点击: 637 次

公司需要连接远程调用, 完全不了,Google之 终于找到 一个PHP的XMLRPC库,

sf上的编辑推荐 http://phpxmlrpc.sourceforge.net/ 包

协议 网站 www.xmlrpc.com

XMLRPC其实就是 一个 Http请求到一个服务器 服务器返回一个XML页面的过程,只是大家遵守同样的格式 这样大家就可以互相调用了。

发送:

POST /test/xmlrpc/server.php HTTP/1.0User-Agent: XML-RPC for PHP 2.2Host: localhost:80Accept-Encoding: gzip, deflateAccept-Charset: UTF-8,ISO-8859-1,US-ASCIIContent-Type: text/xmlContent-Length: 163<?xml version="1.0"?><methodCall><methodName>saySomething</methodName><params><param><value><string> 成都天气 很不错!又要下雨了</string></value></param></params></methodCall>methodCall 方法名params 参数param 参数    string 数据类型

服务器接收到请求后用给的参数执行请求的方法按照协议格式返回数据:

HEADER: date: Fri, 08 Jun 2007 08:33:14 GMTHEADER: server: Apache/2.0.54 (Win32)HEADER: x-powered-by: PHP/4.3.11HEADER: content-encoding: gzipHEADER: vary: Accept-EncodingHEADER: content-length: 193HEADER: connection: closeHEADER: content-type: text/xml<?xml version="1.0"?><methodResponse><params><param><value><string>服务器大人说 : 成都天气 很厚道!又要下雨了</string></value></param></params></methodResponse>这个就是返回的内容了 描述返回了一个 string server.php require "lib/xmlrpc.inc.php";
require "lib/xmlrpcs.inc.php";require "Logger.php";//Logger::clean();function saySomething($msg) {
$words=php_xmlrpc_decode($msg->getParam(0));//从msg对象中解码出参数1 为变量 //你可以在这里干n多事情 //下面返回结果
if(strlen($words)>0) {
return new xmlrpcresp( new xmlrpcval('服务器大人说 : '.$words, 'string') ); //返回给客户的
}
else
{
return new xmlrpcresp(0,$xmlrpcerruser + 100, "参数 ‘".$words."’ 服务器怀疑你说废话."); //出现错误返回给客户的,当然也可以不返回 //如果有什么参数不对啊 系统会返回错误的 //$xmlrpcerruser + 100 这个是返回客户自定义错误时候的错误代码 //开发RPC程序的时候最好自己定义一个错误表 客户端显示的错误编号会是 100 }
} //最后建立服务器 $s=new xmlrpc_server(
array(
'say' => array(
'function' => 'saySomething', //命令对应要调用的函数
'signature' => array( array('string','string') ),//返回,输入 的数据类型 //一个函数可以有几种输入和输出类型
'docstring' => 'This service echoes Hello+input stirng.' //对该调用的说明
)
)
,0 //这个参数决定此时不立即服务
);
//$s->response_charset_encoding = "UTF-8"; //可以设置一些参数
$s->service();//现在才开始服务?> client.php <?
require('lib/xmlrpc.inc.php');$s=new xmlrpc_client('/test/xmlrpc/server.php', 'localhost', 80);//建立连接器
//$client->request_charset_encoding = 'UTF-8';if($_GET['debug'])$s->setDebug(2); //可以设置调试来查看详细HTTP 请求信息   $input=new xmlrpcval(' 成都天气 很厚道!又要下雨了 ', 'string');//要传递的变量,用他的类进行包装 以便自动转化成有效的XML$paras=array($input);//参数都要丢到数组中$msg=new xmlrpcmsg('say', $paras);//命令 这些你发布服务器的时候要有文档描述的$response=$s->send($msg);//用刚才建立的连接器发送这条请求

if($response->faultcode()==0) {

//执行没有异常
$response=php_xmlrpc_decode($response->value());
echo $response;//    显示结果
} else {
print '错误: '.$response->faultcode().', '.$response->faultstring().'';

//发生错误
}

我的 版本是

XML-RPC for PHP version 2.2

XML-RPC 里很多全局变量在与你自己的应用框架集成的时候 要注意点,这个包提供很多helper可以研究下。

声明: 本文由( 乐测网 )原创编译,转载请保留链接: PHP XMLRPC实践

PHP XMLRPC实践:等您坐沙发呢!

发表评论(需填写下方的验证回答,无用户名的评论将视为匿名发表,您也可以登陆或注册后再发表评论)

您必须 [ 登录 ] 才能发表留言!

@关注乐测网

-----==== 本站公告 ====-----
1.本站是目前唯一能支持智能手机平板电脑访问的软件测试技术网站.
2.具体访问方法请参考本站的手机访问说明,或直接点击以下链接:

→点击这里打开手机平板访问说明←

    智能手机平板电脑访问方法

1.用手机浏览器输入本站网址http://www.test666.com就可直接访问
2.微信、QQ、微博或手机浏览器的二维码扫描功能扫描以下二维码图

标签云球