• 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 getVersion(self):
            return "Powerd By Python 1.0" 
        #打印字符串的方法
        def echoString(self, strs):
            s = u'From Python - '
            return s + strs
        #加法运算的方法
        def add(self, num1, num2):
        sums = num1 + num2
        s = 'sum:' + str(sums)
        return s
           
    #创建实例
    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
    /**
    *xmlrpc_client.php
    *XML-RPC客户端演示程序
    */
    
    //引入xmlrpc开发库
    #require('libphpxmlrpc/xmlrpc.inc');
    include('libphpxmlrpc/xmlrpc.inc');
    
    //show messages 查看报文内容的函数
    function show_message($msg,$rsp)
    {
        $msg->createpayload();
        print 'REQUEST:<xmp>'.$msg->payload.'</xmp>';
        print 'RESPONSE:<xmp>'.$rsp->serialize().'</xmp>';
    }
    
    //创建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 = new xmlrpcval('Hello World!', 'string');
    #$num1 = new xmlrpcval(1, 'int');
    #$num2 = new xmlrpcval(2, 'int');
    
    #$inputString = php_xmlrpc_encode('Hello World!');
    $num1 = php_xmlrpc_encode(1);
    $num2 = php_xmlrpc_encode(2);
    
    //create an array of parameters, xmlrpcmsg的第二个参数是一个参数表,因此参数要转换成数组的形式
    #$parameters = array($inputString);
    $parameters = array($num1, $num2);
    
    //create the message object, 创建XML-RPC报文,参数分别为 远程方法名 和 参数表
    #$msg = new xmlrpcmsg('getVersion');
    #$msg = new xmlrpcmsg('echoString', $parameters);
    $msg = new xmlrpcmsg('add', $parameters);
    
    $client->request_charset_encoding = 'utf-8';
    $client->debug = true;
    
    //send the message, get the response
    /*发送报文,返回值为一个xmlrpcresp对象,它包含以下三个方法:
      1.faultCode() 出错代码,如果成功将返回0
      2.faultString() 出错信息
      3.value() 返回值,以xmlrpcval对象形式存在,PHP使用前需要进行解码
    */
    $rsp = $client->send($msg);
    
    //check for errors
    if(0 == $rsp->faultcode()) 
    {
        //decode the response to a PHP type, 将xmlrpcval对象解码
        $response = php_xmlrpc_decode($rsp->value());
    
        //print results
        print '<pre>';
        var_dump($response);
        #echo $response;  
        #print_r($response);
        print '</pre>';
    } 
    else 
    {
        //print errors
        print 'Error: '.$rsp->faultcode().', '.$rsp->faultstring().'<br>';
    }
    
    //show messages, 查看报文内容
    #show_message($msg,$rsp);
    ?>

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

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

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

  • 相关阅读:
    2018-8-10-wpf-绑定-DataGridTextColumn-
    行踪隐藏 代理助手
    木马防杀 花指令 OllyDbg
    木马加壳
    elsave.exe日志清除
    黑客小工具
    WinRAR捆绑木马
    网页木马使用
    灰鸽子商业版用法
    黑洞远程连接
  • 原文地址:https://www.cnblogs.com/lxt287994374/p/3905434.html
Copyright © 2020-2023  润新知