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/ ...
随机推荐
- Mac 奇淫巧技 哈哈
1. 设置别名 sudo vim ~/.bash_profile alias ll='ls -lhF' alias la='ls -hlAF' alias c='clear' alias rm='ls ...
- “应用程序无法正常启动(oxc000007b)”解决方案
- Auto-Test 要点纪录(一)
1,select下拉框类型 使用工具可以看到html对应标签为<select>这类标签才是真正的下拉框类型就需要对应的方法,不能但看页面上的效果,有的做成了效果但其实不是select类型即 ...
- iphone开发-SQLite数据库使用
我现在要使用SQLite3.0创建一个数据库,然后在数据库中创建一个表格. 首先要引入SQLite3.0的lib库.然后包含头文件#import <sqlite3.h> [1]打开数据库, ...
- php字符串实例
2.双引号字符串 <?php print "I have gone to the store."; print "The sauce cost \$10.25.&q ...
- Linux学习之十一-Linux字符集及乱码处理
Linux字符集及乱码处理 1.字符(Character)是各种文字和符号的总称,包括各国家文字.标点符号.图形符号.数字等.字符集(Character set)是多个字符的集合,字符集种类较多,每个 ...
- Java数据结构-线性表之静态链表
静态链表的定义: 节点由一个一维数组和一个指针域组成,数组用来存放数据元素,而指针域里面的指针(又称游标)用来指向下一个节点的数组下标. 这种链表称之为静态链表. 链表中的数组第一个和最后一个位置须要 ...
- 19. Spring Boot 添加JSP支持【从零开始学Spring Boot】
转:http://blog.csdn.net/linxingliang/article/details/52017140 这个部分比较复杂,所以单独创建一个工程来进行讲解: 大体步骤: (1) ...
- Java排序算法(三):直接插入排序
[基本思想] 关键:在前面已经排好序的序列中找到合适的插入位置 步骤: 1. 从第一个元素開始,该元素能够觉得已经排好序. 2. 取出下一个元素.在已经排好序的元素序列中从后往前扫描进行比較. 3. ...
- UNP学习笔记(第三十章 客户/服务器程序设计范式)
TCP测试用客户程序 #include "unp.h" #define MAXN 16384 /* max # bytes to request from server */ in ...