将数组从Python发送到PHP

2024-10-03 02:36:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图用Python使用用PHP创建的WSDL

服务片段:

        require_once('lib/nusoap.php');
        date_default_timezone_set('America/Mexico_City');
        function Sum($numbers){
            return array_sum($numbers);
        }
        ...

客户:

from suds.client import Client

    def wsarchivo():
        url = "http://localhost/PracticeSumArray/server.php?wsdl"
        client = Client(url)
        res = client.service.Sum([1,2,3])
        print(res)

    wsarchivo()

但是在运行时,以这种方式发送参数是不起作用的,不像用PHP中的客户机那样,发送参数的方式应该是'numbers' => array (1, 2, 3),并且工作正常


Tags: clienturl参数方式resrequirearraywsdl
1条回答
网友
1楼 · 发布于 2024-10-03 02:36:03

我可以解决我的问题,我把它放在这里以防其他人有用,我犯的第一个错误是将输入参数声明为一个整体xsd:int,所以我所做的是在PHP服务器上将它声明为SOAP-ENC:Array

$server->register(
        'Suma',
        array('numbers' => 'SOAP-ENC:Array'),
        array('return' => 'xsd:int'),
        $ns
    );

现在在Python客户机中,我使用suds客户机的factory.create()方法声明了一个类型为SOAP-ENC:Array的变量

from suds.client import Client

def wsarchivo():
    client = Client("http://localhost/PracticaSumaArray/server.php?wsdl")
    request = client.factory.create('SOAP-ENC:Array')
    request.numbers = [1,2,3]
    res = client.service.Suma(request)
    print(res)

wsarchivo()

执行时:

Output:
6

相关问题 更多 >