codeIgniter3 学习笔记九(XML-RPC)
Posted 岁月可贵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了codeIgniter3 学习笔记九(XML-RPC)相关的知识,希望对你有一定的参考价值。
XML-RPC
CodeIgniter 的 XML-RPC 类允许你向另外一个服务器发送请求,或者建立一个自己的 XML-RPC 服务器来接受请求
注:使用 XML-RPC 是必须保证 php 版本低于版本7,版本7 不支持 each
方法
案例一: 发送请求
class Text extends CI_Controller
public function __construct()
parent::__construct();
// 加载 xmlrpc 模块
$this->load->library('xmlrpc');
public function send()
// 设置服务器地址和端口
$this->xmlrpc->server('http://rpc.pingmatic.com/', 80);
// 设置调用服务器中的类的方法(即调用 weblogUpdates类中的 ping 方法)
$this->xmlrpc->method('weblogUpdates.ping');
// 设置请求参数
$request = array('My Photoblog', 'http://www.my-site.com/photoblog');
// 发送请求
$this->xmlrpc->send_request($request);
if ( ! $this->xmlrpc->send_request())
// 请求出现错误
echo $this->xmlrpc->display_error();
案例二:创建服务监听
class Text extends CI_Controller
public function getUserInfo($request)
$username = 'smitty';
$password = 'secretsmittypass';
$this->load->library('xmlrpc');
// 获取请求参数
$parameters = $request->output_parameters();
if ($parameters[1] != $username && $parameters[2] != $password)
// 发送错误信息
return $this->xmlrpc->send_error_message('100', 'Invalid Access');
$response = array(
array(
'nickname' => array('Smitty', 'string'),
'userid' => array('99', 'string'),
'url' => array('http://yoursite.com', 'string'),
'email' => array('jsmith@yoursite.com', 'string'),
'lastname' => array('Smith', 'string'),
'firstname' => array('John', 'string')
),
// 数据类型
'struct'
);
return $this->xmlrpc->send_response($response);
案例三:创建服务器和客户端
- 服务端
application/controllers/Xmlrpc_server.php
class Xmlrpc_server extends CI_Controller
public function index()
// 加载模型
$this->load->library('xmlrpc');
$this->load->library('xmlrpcs');
// 设置加载服务端方法,根据请求参数匹配对应类中的方法
$config['functions']['Greetings'] = array('function' => 'Xmlrpc_server.process');
// 加载
$this->xmlrpcs->initialize($config);
// 启动服务
$this->xmlrpcs->serve();
public function process($request)
// 获取请求参数
$parameters = $request->output_parameters();
// 响应数据
$response = array(
array(
'you_said' => $parameters[0],
'i_respond' => 'Not bad at all.'
),
'struct'
);
// 返回响应数据
return $this->xmlrpc->send_response($response);
- 客户端
application/controllers/Xmlrpc_client.php
class Xmlrpc_client extends CI_Controller
public function index()
// 加载辅助函数 url
$this->load->helper('url');
// 设置服务端站点(即服务端类名 xmlrpc_server)
$server_url = site_url('xmlrpc_server');
// 加载辅助 xmlrpc 模型
$this->load->library('xmlrpc');
// 设置访问服务器的 url 及端口
$this->xmlrpc->server($server_url, 80);
// 设置访问服务器方法
$this->xmlrpc->method('Greetings');
// 设置请求参数,发送请求
$request = array('How is it going?');
$this->xmlrpc->request($request);
if ( ! $this->xmlrpc->send_request())
// 请求发送错误
echo $this->xmlrpc->display_error();
else
echo '<pre>';
// 获取响应数据
print_r($this->xmlrpc->display_response());
/*
Array
(
[you_said] => How is it going?
[i_respond] => Not bad at all.
)
*/
echo '</pre>';
访问:http://localhost/xmlrpc_client.php
以上是关于codeIgniter3 学习笔记九(XML-RPC)的主要内容,如果未能解决你的问题,请参考以下文章