将数组从 Python 发送到 PHP
Send an array from Python to PHP
我正在尝试使用 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)
并正常工作。
我可以解决我的问题,我把它留在这里以防其他人有用,我犯的第一个错误是将输入参数声明为一个整体xsd:int
,所以我所做的就是将其声明为SOAP-ENC:Array
在 PHP 的服务器上:
$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
我正在尝试使用 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)
并正常工作。
我可以解决我的问题,我把它留在这里以防其他人有用,我犯的第一个错误是将输入参数声明为一个整体xsd:int
,所以我所做的就是将其声明为SOAP-ENC:Array
在 PHP 的服务器上:
$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