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使用示例的更多相关文章

  1. 【转】Python中实现远程调用(RPC、RMI)简单例子

    远程调用使得调用远程服务器的对象.方法的方式就和调用本地对象.方法的方式差不多,因为我们通过网络编程把这些都隐藏起来了.远程调用是分布式系统的基础. 远程调用一般分为两种,远程过程调用(RPC)和远程 ...

  2. Python中实现远程调用(RPC、RMI)简单例子

    说白了,远程调用就是将对象名.函数名.参数等传递给远程服务器,服务器将处理结果返回给客户端   远程调用使得调用远程服务器的对象.方法的方式就和调用本地对象.方法的方式差不多,因为我们通过网络编程把这 ...

  3. 【转】Python的XML-RPC简介

    编写客户端提交数据到服务器处理是程序员最常碰到的几个问题之一.各种不同的语言对此都有相应的解决方案.比如Unix下,C程序员们可以用SUNRPC,Java程序员则使用RMI来处理.大多数语言还都可以使 ...

  4. WebService和Http的POST和GET请求区别和示例

    web service(SOAP) Webservice的一个最基本的目的就是提供在各个不同平台的不同应用系统的协同工作能力.Web service 就是一个应用程序,它向外界暴露出一个能够通过Web ...

  5. RSS介绍、RSS 2.0规范说明和示例代码

    RSS是一种消息来源格式规范,用以发布经常更新资料的网站,例如博客.新闻的网摘.RSS文件,又称做摘要.网摘.更新.频道等,包含了全文或节选文字,再加上一定的属性数据.RSS让发布者自动发布信息,也使 ...

  6. 使用 XML-RPC 为 C++ 应用程序启用 Web 服务

    http://www.ibm.com/developerworks/cn/webservices/ws-xml-rpc/ 引言 Internet 现在的受欢迎程度越来越高,由于这个原因及其固有的优势, ...

  7. 使用xml-rpc调试openerp模块中的函数

    运行openerp模块中的函数 有很多方式, 可以在视图中加个按钮然后点击它, 也可以在集成开发环境中强制执行它. 不过, 用python写个小脚本,xml-rpc调用直接执行它, 无疑是最简便的方法 ...

  8. Odoo(OpenERP)开发实践:通过XML-RPC接口访问Odoo数据库

    Odoo(OpenERP)服务器支持通过XML-RPC接口访问.操作数据库,基于此可实现与其他系统的交互与集成. 本文是使用Java通过XMLRPC接口操作Odoo数据库的简单示例.本例引用的jar包 ...

  9. XML-RPC.NET

    XML-RPC.NET 是一个 .NET 的客户端服务器的基于 XML-RPC 远程过程调用的框架. 示例代码: [XmlRpcUrl("http://betty.userland.com/ ...

随机推荐

  1. LoadRunner安装破解

    安装过程 1. 运行“setup.exe” 点击安装,其中会有提示缺少“Microsoft Visual C++ 2005 SP1等运行组件”,下载这些组件.这里安装“vcredist_x86.exe ...

  2. java反射和代理

    这一篇我们说说反射和动态代理,为什么这两个要一起说呢?因为动态代理中会用到反射,而且java中反射的用处太多了,基本上无处不在,而且功能十分强大: 1.反射简介 反射是什么呢?一般都是很专业的说法:在 ...

  3. opentracing学习入门

    http://blog.csdn.net/akfly/article/details/53975388

  4. [置顶] 一个简单好用的zabbix告警信息发送工具

    之前使用邮件和短信发送zabbix告警信息,但告警信息无法实时查看或者无法发送,故障无法及时通知运维人员. 后来使用第三方微信接口发送信息,愉快地用了一年多,突然收费了. zabbix告警一直是我的痛 ...

  5. python 浮点数保留小数

    http://www.cnblogs.com/Raymon-Geng/p/5784290.html 这里有三种方法, round(a,2) '%.2f' % a Decimal('5.000').qu ...

  6. Java中的http相关的库:httpclient/httpcore/okhttp/http-request

    httpclient/httpcore是apache下面的项目:中文文档下载参考 5 官网:http://hc.apache.org/ 在线文档:http://hc.apache.org/httpco ...

  7. 【共享单车】—— React后台管理系统开发手记:主页面架构设计

    前言:以下内容基于React全家桶+AntD实战课程的学习实践过程记录.最终成果github地址:https://github.com/66Web/react-antd-manager,欢迎star. ...

  8. AutoCAD如何移动零件和缩放零件图

    如下图所示,我想要把这个零件放大并移动到图纸的中央,先全部选中这个零件,方法是在左上角点一下,然后拖出一个矩形包围整个零件   然后点击右侧的缩放命令,底部的命令栏变成指定基点的时候,在这个图纸的右上 ...

  9. AutoCAD如何将dwf转成dwg格式

    dwf转成dwg怎么转, 悬赏分:30 - 解决时间:2009-11-22 10:19 重金:dwf转成dwg怎么转, 我是用在出图上的. 最佳答案 Design Web Format (DWF) 文 ...

  10. GUID概念

     GUID概念 GUID: 即Globally Unique Identifier(全球唯一标识符) 也称作 UUID(Universally Unique IDentifier) . GUID是 ...