码迷,mamicode.com
首页 > 编程语言 > 详细

Python与PHP通过XMLRPC进行通信

时间:2014-08-11 21:11:12      阅读:331      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   os   文件   for   

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 = uFrom 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

Python与PHP通过XMLRPC进行通信

标签:style   blog   http   color   使用   os   文件   for   

原文地址:http://www.cnblogs.com/lxt287994374/p/3905434.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!