XML-RPC的全称是XML远程过程调用,即XML(标准通用标记语言下的一个子集),远程过程调用。它是一套允许运行在不同操作系统,不同环境的程序实现基于网络过程调用的规范和一系列的实现。这种远程过程调用使用HTTP作为传输协议,XML作为传送信息的编码格式.XML-RPC的定义尽可能的保持了简单,但同时能够传送,处理,返回复杂的数据结构。
XMLRPC基本介绍
XML-RPC是工作在互联网的上远程过程调用协议。相当于一个简化版的Webservice,一个XML-RPC消息就是一个请求体为XML的HTTP-POST请求,调用被的方法在服务器端的执行并将执行查询查询结果以XML格式编码后返回。
远程调用客户端代码案例
<?php
/**
* Created by PhpStorm.
* User: a364482611
* Date: 2017/8/20
* Time: 13:48
*/
class rpcclient {
protected $url;
public function __construct($url='' )
{
$this->url = $url;
}
protected function query($request)
{
$context = stream_context_create(array(
'http' => array('method' => "POST",
'header' => "Content-Type: text/xml",
'content' => $request
)));
$xml = file_get_contents($this->url, false, $context);
var_dump($xml);
return xmlrpc_decode($xml);
}
public function __call($method , $args)
{
$request = xmlrpc_encode_request($method , $args);
return $this->query($request);
}
}
$rpc = new rpcclient('http://test.solo365.cn/soap.php');
var_dump($rpc);
var_dump($rpc->who());
var_dump($rpc->sum(4,5,6));
服务器端代码实例
* Created by PhpStorm.
* User: a364482611
* Date: 2017/8/20
* Time: 13:48
*/
function who()
{
return '我是启东';
}
function sum($method , $args)
{
return array_sum($args).$method.$extra;
}
//创建RPCServe
$server = xmlrpc_server_create ();
xmlrpc_server_register_method ($server , 'who' , 'who');
xmlrpc_server_register_method ($server , 'sum' , 'sum');
//收取请求
$request =file_get_contents('php://input');
// 执行调用客户端的XML请求后获取执行结果
$xmlrpc_response = xmlrpc_server_call_method($server, $request , null);
// 把函数处理后的结果XML进行输出
header('Content-Type: text/xml');
echo $xmlrpc_response;
//销毁XML-RPC服务器端资源
xmlrpc_server_destroy($server);