使用XML-RPCPHP构建Web服务实例教程
目前,有两个Web服务通信协议标准,一个是XML-RPC,和其他soap.xml-rpc比较简单,时间比较早,和肥皂是比较复杂的,主要是当它需要使用一个稳定的、健壮的、安全的和复杂的相互作用。
PHP本身集成了访问两个XML-RPC和SOAP协议,主要集中在xmlrpc扩展。此外,在PHP的梨,无论是PHP 4或PHP 5已经默认集成的XML-RPC的延伸,且延伸独立xmlrpc扩展。能独立实施的XML-RPC协议交互。如果没有xmlrpc扩展,建议使用PEAR::XML-RPC膨胀。
在这里,我们主要使用XML-RPC来描述Web服务的交互过程。内容部分来自PHP手册,内容比较详细,读者可以参考手册。
两。安装xmlrpc扩展:
如果你没有安装在你的系统因为PHP扩展,其正确安装。
在Windows平台下,我们先将扩展php_xmlrpc.dll在PHP安装目录为C: Windows或C: winnt目录(PHP4扩展C: PHP 扩展目录,PHP5扩展C: PHP ext目录的DLL文件扩展名。安装目录为你的PHP安装目录设置,这里只是举例),而在分号C前面延伸= php_xmlrpc.dll: Windows php.ini或C:系统 PHP INI;删除,然后重新启动Web服务器(phpinfo)来看有没有XML-RPC项目将能够决定是否有权安装xmlrpc扩展。
Unix / Linux平台下,如果没有xmlrpc扩展安装,请重新编译PHP。当配置添加,请添加,因为选项,然后检查phpinfo()看XMLRPC正确安装。
(Note: the following operation is based on the normal installation of XMLRPC expansion, please be sure to install it correctly.)
三、XML-RPC的工作原理:
XML-RPC大致是利用XML来沟通的全过程。首先,我们构建了一个请求,服务器端使用RPC来从RPC客户端通过XML发送请求,并返回处理结果对RPC客户端以XML的形式。客户机将分析XML以获取她需要的数据。
XML-RPC服务器端必须有现成的函数被调用的客户端,并在客户端提交的请求方法的功能必须与服务器端一致,否则将无法获得期望的结果。
这里我用简单的代码来描述整个过程。
四、XML-RPC的实践:
服务器端采用xmlrpc_server_create函数生成一个服务器端,然后注册RPC调用接口需要被曝光,接受XML数据从RPC客户端后,然后处理,处理结果显示通过XML格式的客户。
rpc_server.php文件的代码如下:
*函数:提供给RPC客户机的函数
*参数:
* $方法客户端需要调用的函数
*,$params客户端需要调用函数的参数数组
*返回:返回指定的调用结果
* /
功能rpc_server_func($方法,$params){
$参数= $params { 0 };
如果(参数= })
{
本资料由得到回报=美元的方法;
}
其他的
{
为回报=不是指定的方法或参数;
}
返回美元;
}
/ /创建一个XML-RPC服务器
xmlrpc_server美元= xmlrpc_server_create();
一个服务器登记/电话rpc_server方法,实际上指向了一个rpc_server_func功能
xmlrpc_server_register_method(xmlrpc_server美元,rpc_server
在客户端上接受xml数据
要求美元= $ http_raw_post_data;
调用客户端xml请求访问执行结果
xmlrpc_response美元= xmlrpc_server_call_method(xmlrpc_server美元,要求美元,null);
结果/处理的XML输出函数
头(''content-type:文本或XML);
Echo $xmlrpc_response;
XML-RPC /服务器资源的破坏
xmlrpc_server_destroy($ xmlrpc_server);
在这一点上,服务器端盖,然后我们建立我们的RPC客户端,客户端可以访问通过XML-RPC服务器端套接字大致80端口,然后封装RPC接口需要调用XML,提交给RPC服务器端通过POST请求,并最终获得服务器端返回结果。
rpc_client.php文件的代码如下:
*功能:一个功能,提供客户端连接到XML-RPC服务器端
* parameters:
*主机需要连接的主机
*端口连接主机的端口。
* $ rpc_server XML-RPC服务器端文件
*请求XML请求信息的封装
*返回:连接成功返回从服务器端返回的XML信息,未能返回false。
* /
功能rpc_client_call(美元美元美元的主机,端口,rpc_server,要求美元){
打开指定的服务器
$ FP = fsockopen($主机端口,美元);
/ /结构需要进行通信的XML-RPC服务器发送请求信息查询
为查询=后rpc_server HTTP / 1美元user_agent:XML-RPC客户端主持人:$主机。内容类型:文本内容长度:。Strlen(合要求)。
/向服务器发送好HTTP协议的构造失败,返回false
如果(!作用是:将内容($ FP,$查询,strlen($查询))
{
errstr美元=写错误;
返回false;
}
获取服务器返回的所有信息,包括HTTP和XML头部信息
$=;
而(!Feof($ FP))
{
$内容= fgets($ FP);
}
在返回获取内容后关闭连接资源
Fclose($ FP);
返回$内容;
}
服务器连接信息
为主机= ''localhost;
$端口= 80;
rpc_server美元= / / rpc_server ~ heiyeluren PHP;
需要发送XML请求/编码成XML,需要调用rpc_server方法、参数获取
要求美元= xmlrpc_encode_request(''rpc_server,''get);
/ / rpc_client_call呼叫请求发送到XML-RPC服务器获取信息
为响应= rpc_client_call($主机、端口rpc_server美元,美元,美元的请求);
从服务器端XML返回的分析,删除HTTP头,并转到XML PHP来识别字符串。
美元= ' ' ';
美元=爆炸($分割,$响应);
美元=拆分。array_pop($ XML);
为响应= xmlrpc_decode($ XML);
从RPC服务器信息获得的输出
print_r(合反应);
总的来说,上面的例子是提交一个方法在过去被称为rpc_server,参数得到的,然后得到服务器端的返回。从服务器端返回的XML数据是:
通过get方法获得此数据
然后我们就可以用xmlrpc_decode函数代码这个XML字符串PHP,你将能够处理它,然后整个Web服务交互完成。
五。总结:
无论是XML-RPC或肥皂,只要我们能使远程过程调用,完成我们的项目安全和安全,甚至整个Web服务是成功的。此外,如果可以的话,你也可以尝试使用梨XML-RPC做同样的操作。它可能更简单,更适合你。感兴趣的读者可以试着完成它。