php xmlrpc使用示例

本文介绍了一种使用 PHP 实现 XML-RPC 远程过程调用的方法。具体包括了如何配置 php.ini 开启 xmlrpc 扩展,通过示例代码展示了 RPC 客户端和服务端的工作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

xmlrpc 远程过程调用, 使用xml文本方式传输数据.

soap协议比xmlrpc复杂并强大.

 

1.修改 php.ini,开启 xmlrpc 扩展

 

2.rpc_client.php

<?php 
function xmlrpc_call($host, $port, $server_file, $request) {

//打开指定的服务器端
$fp = fsockopen($host, $port, $errno, $errstr); 

//构造需要进行通信的XML-RPC服务器端的查询POST请求信息
$query = "POST ".$server_file." HTTP/1.0\n";
$query .= "User_Agent: My Egg Client\n";
$query .= "Host: ".$host."\n";
$query .= "Content-Type: text/xml\n";
$query .= "Content-Length: ".strlen($request)."\n\n"; // 必须是两个 \n !!
$query .= $request."\n"; 

//把构造好的HTTP协议发送给服务器,失败返回false
if (!fputs($fp, $query, strlen($query))) { 
$errstr = "Write error"; 
return 0; 
} 

//获取从服务器端返回的所有信息,包括HTTP头和XML信息
$contents = ''; 
while (!feof($fp)) { 
$contents .= fgets($fp); 
} 

//关闭连接资源后返回获取的内容
fclose($fp); 

// 分析从服务器端返回的XML,去掉HTTP头信息,并且把XML转为PHP能识别的字符串
$split = '<?xml version="1.0" encoding="iso-8859-1"?>';
$xml = explode($split, $contents);
$xml = $split . array_pop($xml);
$contents = xmlrpc_decode($xml);

return $contents; 
}

//构造连接RPC服务器端的信息
$host = 'localhost'; // PRC服务器主机地址
$port = 80; // PRC服务器主机端口
$server_file = '/rpc_server.php'; // 左斜杠不能少!!
$request = xmlrpc_encode_request('cycle', 'aaa'); // 把需要发送的XML请求进行编码: 调用的方法是cycle, 参数是egg

//调用 xmlrpc_call 函数把所有请求发送给XML-RPC服务器端, 并获取返回值
$response = xmlrpc_call($host, $port, $server_file, $request);
print_r($response);

  

3.rpc_server.php

<?php 
function lifecycle($method, $params) { 
switch($params[0]) { 
default: 
$reply = 'You post string is '.$params[0]; 
} 
return $reply; 
}

$server = xmlrpc_server_create(); // 产生一个XML-RPC的服务器端

$func_name_client = 'cycle';
$func_name_server = 'lifecycle';
xmlrpc_server_register_method($server, $func_name_client, $func_name_server); // 注册一个供RPC客户端调用的名称: cycle
$request = $HTTP_RAW_POST_DATA; // 接收RPC客户端传递过来的数据

// 调用RPC服务器的处理函数
$response = xmlrpc_server_call_method($server, $request, null);

// 返回结果给RPC客户端 
header('Content-Type: text/xml'); 
print $response;

//销毁XML-RPC服务器端资源 
xmlrpc_server_destroy($server);

  

4.访问:localhost/rpc_client.php, 返回值为

 You post string is egg

 

 

 

 

 

 

 

;

转载于:https://www.cnblogs.com/upup2015/p/7782539.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值