php xmlrpc使用示例
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
;
php xmlrpc使用示例的更多相关文章
- 【转】Python中实现远程调用(RPC、RMI)简单例子
远程调用使得调用远程服务器的对象.方法的方式就和调用本地对象.方法的方式差不多,因为我们通过网络编程把这些都隐藏起来了.远程调用是分布式系统的基础. 远程调用一般分为两种,远程过程调用(RPC)和远程 ...
- Python中实现远程调用(RPC、RMI)简单例子
说白了,远程调用就是将对象名.函数名.参数等传递给远程服务器,服务器将处理结果返回给客户端 远程调用使得调用远程服务器的对象.方法的方式就和调用本地对象.方法的方式差不多,因为我们通过网络编程把这 ...
- 【转】Python的XML-RPC简介
编写客户端提交数据到服务器处理是程序员最常碰到的几个问题之一.各种不同的语言对此都有相应的解决方案.比如Unix下,C程序员们可以用SUNRPC,Java程序员则使用RMI来处理.大多数语言还都可以使 ...
- WebService和Http的POST和GET请求区别和示例
web service(SOAP) Webservice的一个最基本的目的就是提供在各个不同平台的不同应用系统的协同工作能力.Web service 就是一个应用程序,它向外界暴露出一个能够通过Web ...
- RSS介绍、RSS 2.0规范说明和示例代码
RSS是一种消息来源格式规范,用以发布经常更新资料的网站,例如博客.新闻的网摘.RSS文件,又称做摘要.网摘.更新.频道等,包含了全文或节选文字,再加上一定的属性数据.RSS让发布者自动发布信息,也使 ...
- 使用 XML-RPC 为 C++ 应用程序启用 Web 服务
http://www.ibm.com/developerworks/cn/webservices/ws-xml-rpc/ 引言 Internet 现在的受欢迎程度越来越高,由于这个原因及其固有的优势, ...
- 使用xml-rpc调试openerp模块中的函数
运行openerp模块中的函数 有很多方式, 可以在视图中加个按钮然后点击它, 也可以在集成开发环境中强制执行它. 不过, 用python写个小脚本,xml-rpc调用直接执行它, 无疑是最简便的方法 ...
- Odoo(OpenERP)开发实践:通过XML-RPC接口访问Odoo数据库
Odoo(OpenERP)服务器支持通过XML-RPC接口访问.操作数据库,基于此可实现与其他系统的交互与集成. 本文是使用Java通过XMLRPC接口操作Odoo数据库的简单示例.本例引用的jar包 ...
- XML-RPC.NET
XML-RPC.NET 是一个 .NET 的客户端服务器的基于 XML-RPC 远程过程调用的框架. 示例代码: [XmlRpcUrl("http://betty.userland.com/ ...
随机推荐
- ACM的奇计淫巧_扩栈C++/G++
C++ #pragma comment(linker, "/STACK:102400000,102400000") G++ << ; // 256MB char *p ...
- Android中的多线程断点续传
Android多线程断点下载的代码流程解析: 运行效果图: 实现流程全解析: Step 1:创建一个用来记录线程下载信息的表 创建数据库表,于是乎我们创建一个数据库的管理器类,继承SQLiteOpen ...
- wpa破解学习
TENDA 159031106A iPhone 192.168.0.11 90:27:E4:53:49:D6 18:58:52 PC-201211262044 192.168.0.12 00:F1: ...
- jmeter3.x的jtx文件解析
jtl保存测试结果 打开jtl文件,内容为下: timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,suc ...
- 在Android上编译OSG[3.0.2 ] (转)
在Android上编译OSG[3.0.2 ] 分类:Android This file contents can be applied for version OpenSceneGraph(OSG ...
- 2016.7.5 如何在maven中添加所需依赖(只知道jar包的部分名字的情况)
(1)进入官网仓库 http://mvnrepository.com/ (2)输入需要的jar包名 比如这里的jota-time (3)寻找需要的版本,并选取需要的版本 (4)复制需要的maven依赖 ...
- 127.0.0.1和localhost和本机IP三者的区别
1,什么是环回地址??与127.0.0.1的区别呢?? 环回地址是主机用于向自身发送通信的一个特殊地址(也就是一个特殊的目的地址). 可以这么说:同一台主机上的两项服务若使用环回地址而非分配的主机地址 ...
- Docker 开源管理工具集锦
俗话说工欲善其事.必先利其器.Docker 是一种详细的虚拟化技术,Docker 尽管以RestAPI形式提供服务.但在实际生产环境中,管理大规模集群部署的Docker容器确实是一个巨大的挑战.尽管D ...
- 浅谈PHP与手机APP开发即API接口开发
API(Application Programming Interface,应用程序接口)架构,已经成为目前互联网产品开发中常见的软件架构模式,并且诞生很多专门API服务的公司,如:聚合数据(http ...
- 分享一套C++入门基础视频
本课程从C++起步.用户无需不论什么计算机基础,仅仅须要懂的主要的电脑操作,既可学习本课程.本课程适合在校大学生,在职人员等,通过本课程的学习,学员可掌握C++\MFC\VC++server端.网络编 ...