Python与PHP通过XMLRPC进行通信
Python与PHP通过XMLRPC进行通信:服务器端用Python,客户端用PHP。
服务器端:xmlrpc_server.py
#!/usr/bin/python
# coding: UTF-8
from SimpleXMLRPCServer import SimpleXMLRPCServer
from SocketServer import ThreadingMixIn
class ThreadXMLRPCServer(ThreadingMixIn, SimpleXMLRPCServer):pass #定义自己的CMS类
class MyCMS:
def echoString(self, strs):
s = u'From Python - '
return s + strs
def sayHello(self):
return "hello xmlprc" #创建实例
cms = MyCMS()
server = ThreadXMLRPCServer(("localhost", 8888), allow_none=True) #注册
server.register_instance(cms) #服务器执行,并监听此端口
print "Listening on port 8888"
server.serve_forever()
客户端:xmlrpc_client.php
<?php
//XML-RPC客户端演示程序 ///require('libphpxmlrpc/xmlrpc.inc');
include('libphpxmlrpc/xmlrpc.inc'); $xmlrpc_internalencoding = 'UTF-8'; //创建client对象, 三个参数依次为 path, hostname, port
$client=new xmlrpc_client('/', 'localhost', 8888); //create xmlrpcval object, which allows the encoding of our variable
//创建xmlrpcval对象,将我们的PHP变量编码为XML-RPC需要的XML形式
$inputString = php_xmlrpc_encode('Hello World'); //create an array of parameters
//尽管我们只有一个参数,但仍然要转换成数组的形式,因为xmlrpcmsg的第二个参数是一个参数表
$parameters=array($inputString); //create the message object
//创建XML-RPC报文,参数分别为 远程方法名 和 参数表
$msg=new xmlrpcmsg('echoString', $parameters);
///$msg=new xmlrpcmsg('sayHello'); //$client->request_charset_encoding = 'utf-8'; //send the message, get the response
//发送报文,返回值$rsp为一个xmlrpcresp对象,它包含以下三个方法:
// faultCode() 出错代码,如果成功将返回0
// faultString() 出错信息
// value() 返回值,以xmlrpcval对象形式存在,PHP使用前需要进行解码
$client->debug = true;
$rsp=$client->send($msg); //check for errors
if($rsp->faultcode()==0)
{
//decode the response to a PHP type
//xmlrpc_decode()函数用于将xmlrpcval对象解码
$response=php_xmlrpc_decode($rsp->value()); //print results
print '<pre>';
var_dump($response);
///echo $response;
print '</pre>';
}
else
{
//print errors
print 'Error: '.$rsp->faultcode().', '.$rsp->faultstring().'<br>';
} //show messages
//查看一下报文内容
/*$msg->createpayload();
print 'REQUEST:<xmp>'.$msg->payload.'</xmp>';
print 'RESPONSE:<xmp>'.$rsp->serialize().'</xmp>';*/
?>
Python与PHP通过XMLRPC进行通信的更多相关文章
- The Python web services developer: XML-RPC for Python
原文地址:http://www.ibm.com/developerworks/webservices/library/ws-pyth10/index.html 摘要:概括地说,您可以将 XML-RPC ...
- Python并发编程之线程消息通信机制任务协调(四)
大家好,并发编程 进入第四篇. 本文目录 前言 Event事件 Condition Queue队列 总结 . 前言 前面我已经向大家介绍了,如何使用创建线程,启动线程.相信大家都会有这样一个想法,线程 ...
- Python进阶----UDP协议使用socket通信,socketserver模块实现并发
Python进阶----UDP协议使用socket通信,socketserver模块实现并发 一丶基于UDP协议的socket 实现UDP协议传输数据 代码如下:
- Python基于socket模块实现UDP通信功能示例
Python基于socket模块实现UDP通信功能示例 本文实例讲述了Python基于socket模块实现UDP通信功能.分享给大家供大家参考,具体如下: 一 代码 1.接收端 import ...
- Python的招牌菜xmlrpc
一.简单介绍 为了解决在系统的80port提供RPC的服务.而又不影响正在运行的WEB服务.人们想出了用HTTP协议传输RPC包的办法.对于差点儿是专门用于传输文本的HTTP协议.要在其上传输RPC封 ...
- python MultiProcessing标准库使用Queue通信的注意要点
今天原本想研究下MultiProcessing标准库下的进程间通信,根据 MultiProcessing官网 给的提示,有两种方法能够来实现进程间的通信,分别是pipe和queue.因为看queue顺 ...
- python下基于sokcet的tcp通信——入门篇
环境 python版本:2.7 IDE:pycharm TCP/UDP协议均为传输层的协议,绝大部分应用程序之间的通信都是使用TCP或UDP,故而在网络通信中及其重要,想详细了解他们之间的差异,可参考 ...
- linux 下 rpc python 实例之使用XML-RPC进行远程文件共享
这是个不错的练习,使用python开发P2P程序,或许通过这个我们可以自己搞出来一个P2P下载工具,类似于迅雷.XML-RPC是一个远程过程调用(remote procedure call,RPC)的 ...
- Python的扩展接口[1] -> 串口通信
串口通信 / Serial Communication 1 串口简介 / Serial Introduction 串行接口(Serial Interface)简称串口,通常为COM接口,数据发送方式为 ...
随机推荐
- 设置vim默认参数 例如设置默认背景颜色
因个人喜好问题,本人使用vim的时候喜欢将背景颜色设为dark. 但是每次打开一个vim的时候都要重新设置一次,感觉非常麻烦. 总要输入[Esc] :set bg=dark很不方便 粗暴的办法是直接进 ...
- MISC-极客大挑战-pen_and_apple.rar
额 一道MISC的题目 关键词:NTFS数据流隐藏 链接:http://pan.baidu.com/s/1c14PM3A 密码:d7hn 拿到的是一个rar压缩文件,解压得到一个无节操的最近很流行 ...
- HDU 5398 (动态树)
Problem GCD Tree 题目大意 n个点的无向完全图,标号1~n,每条边u-->v 的权值为gcd(u,v),求其最大生成树,输出最大边权和. n<=10^5,有多个询问. 解题 ...
- Weibo SDK WP版本回调参数没有uid的解决方法
服务端跟新浪微博交互的时候需要用到UID参数, 但WP的WeiboSDK默认没有提供, 只要增加一个类成员就好了, 序列化json的时候程序会自动处理 下载SDK源代码http://weibowp7s ...
- 关于上传app遇到的一些棘手的小问题
最近上传了一个app,由于是第一次上传,花费在这上面的时间不比做app的耗时短啊....说多了都是泪.下面为了不让大家掉坑里去,分享一些小经验: 1.使用别人的开发者账号上传完自己的app(本人暂无开 ...
- 第三个Sprint总结
工作进展:项目基本已经完成 工作状况:
- Android 学习第17课,使用文件的数据存储(4种存储模式)
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中.可以使用Context ...
- VLOOKUP
vlookup(查找目标,查找范围, 返回值的列数,精确或模糊查找) 1. 查找目标:查找的内容或者单元格引用. 2. 查找范围: 选定一个查找区域. 注意一: 查找目标一定要在该区域的第一列. 注意 ...
- 根据内存布局定位的一个fastdfs坑
在使用fastdfs时,编写数据上传代码时,遇到一个坑.最终根据指针对应的内存布局定位到一个其client API的一个坑,值得记录一下.具体是在 tracker_connect_server() 这 ...
- svn:cleanup failed previous operation has not finished; run cleanup if it was interrupted
svn:cleanup failed previous operation has not finished; run cleanup if it was interrupted 今天 大脑一时短路 ...