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);
Last modification:January 8, 2020
如果觉得我的文章对你有用,请随意赞赏