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>‘;*/
?>

其中,客户端需要php语言的xmlrpc开发库。

下载地址:http://download.csdn.net/detail/lsmallstop/7741211

下载后,将其lib目录拷贝出来并命名为libphpxmlrpc,放到和上面php文件同一个目录下。

Python与PHP通过XMLRPC进行通信,布布扣,bubuko.com

时间: 2024-10-10 15:58:43

Python与PHP通过XMLRPC进行通信的相关文章

[Python]通过websocket与js客户端通信

网站大多使用HTTP协议通信,而HTTP是无连接的协议.只有客户端请求时,服务器端才能发出相应的应答,HTTP请求的包也比较大,如果只是很小的数据通信,开销过大.于是,我们可以使用websocket这个协议,用最小的开销实现面向连接的通信. 具体的websocket介绍可见http://zh.wikipedia.org/wiki/WebSocket 这里,介绍如何使用Python与前端js进行通信. websocket使用HTTP协议完成握手之后,不通过HTTP直接进行websocket通信.

python MultiProcessing标准库使用Queue通信的注意要点

今天原本想研究下MultiProcessing标准库下的进程间通信,根据 MultiProcessing官网 给的提示,有两种方法能够来实现进程间的通信,分别是pipe和queue.因为看queue顺眼,就想着拿queue实现,后来,被坑了....于是有了这篇文章.我按照 python标准库之MultiProcessing库的研究 (1) 里面的代码来的,结果就是不断的出错,死过就是不出结果,看看程序: from multiprocessing import Pool, queues impor

Python的招牌菜xmlrpc

一.简单介绍 为了解决在系统的80port提供RPC的服务.而又不影响正在运行的WEB服务.人们想出了用HTTP协议传输RPC包的办法.对于差点儿是专门用于传输文本的HTTP协议.要在其上传输RPC封包.最方便的方法莫过于把RPC封包编码成文本形式--比如XML文件. XML- RPC(http://www.xml-rpc.com)是由美国UserLand公司指定的一个RPC协议.它将RPC信息封包编码为XML,然后通过 HTTP传输封包: 简单的理解: 将数据定义为xml格式.通过http协议

python下基于sokcet的tcp通信——入门篇

环境 python版本:2.7 IDE:pycharm TCP/UDP协议均为传输层的协议,绝大部分应用程序之间的通信都是使用TCP或UDP,故而在网络通信中及其重要,想详细了解他们之间的差异,可参考http://www.cnblogs.com/vathe/p/6815928.html 1.模拟后台程序,实现浏览器访问 Server端代码 # coding=utf-8 import socket def handle_request(client): buf = client.recv(1024

Python服务器与多种客户端(Python/Java/Android)之间的通信

概述: 我们不会一直满足于客户端程序的开发,因为太过受限了.为了打破这样的受限,你需要做的就是去编写服务器端代码.以及如何在服务器与客户端之间的通信.以下将对此以Python为服务器,并分别以Python.Java.Android为客户端作一个简单的介绍. 服务器端: test_tcp_server.py #!/usr/bin/env python from socket import * from time import ctime HOST = '' PORT = 21567 BUFSIZ

树莓派+Python+pyserial 2.7实现串口通信

手上有个CCD Camera(Barcode Reader/Scanner Module),它是通过RS232通信的,用RS232转USB的转接线连接树莓派,即可完成硬件连接.对于串口通信,可以通过pyserial实现. 首先,安装pyserial: 从https://pypi.python.org/pypi/pyserial下载最新版本的安装包,再通过下面的命令完成安装: tar zxvf pyserial-2.7.tar.gz cd pyserial-2.7 python setup.py

linux 下 rpc python 实例之使用XML-RPC进行远程文件共享

这是个不错的练习,使用python开发P2P程序,或许通过这个我们可以自己搞出来一个P2P下载工具,类似于迅雷.XML-RPC是一个远程过程调用(remote procedure call,RPC)的分布式计算协议,通过XML将调用函数封装,并使用HTTP协议作为传送机制[摘自维基百科] 1.先做一个小小的尝试: 首先进入命令行,输入vim pythonServer.py,然后输入一下代码: from simpleXMLRPCServerr import SimpleXMLRPCServerr

Python的扩展接口[1] -&gt; 串口通信

串口通信 / Serial Communication 1 串口简介 / Serial Introduction 串行接口(Serial Interface)简称串口,通常为COM接口,数据发送方式为一位一位地顺序传送,通信线路简单,一对传输线即可实现双向通信,适用于远距离且传输速度慢的通信.其中最常用的也是标准接口为RS-232,除此之外还有RS-422,RS-485等. 2 pyserial环境搭建 Pyserial的安装可以通过pip进行,直接在命令行输入下列命令进行安装, pip ins

Python 使用socket实现一对多通信

这个折磨了我快一天的时间,查看官网的socket入门例子,都是一对一的,服务器是处理一对一的形式.如果让服务器处理多个客户端,使用Python提供的socketserver函数和select也是可以解决的,但是这两个只能处理客户端发过来的信息,不能自动发起向已经连接到服务器的某个客户端进行通信,经过了多方的查找资料和总结,终于使用socket和threading解决了这个问题. 服务器代码: 1 from tkinter import * 2 from socket import * 3 imp