0

我正在使用zeep python 包,以便通过 SOAP 调用一个函数,该函数接受“ArrayofInt”类型的参数。

传递“普通”整数数组不起作用......解决方法是使用 for 循环遍历数组的元素并一个接一个地发送元素,但这不是我写过的最干净的代码: )

有什么建议么?

4

3 回答 3

3

这个答案会帮你解决的。

使用 Zeep 的 client.get_type 函数创建一个空的 Zeep ArrayOfInt 对象,然后通过它循环您的数组。

client = Client(soap_url)
test_list = [1,2,3,4]
emptyArrayPlaceholder = client.get_type('ns0:ArrayOfInt')
options = emptyArrayPlaceholder()

for el in test_list:
    options['int'].append(el)
于 2018-06-27T03:38:39.210 回答
1

如果您在 SOAP 服务中的方法接受整数数组作为参数,那么您可以尝试这种方式:

clientInt = Client(wsdl)
list_int=[1,2,3]
dict_int = {"ArrayOfInteger":{"integer":list_int}}
clientInt.service.getMultipleInt(**dict_int)

当您将 **dict_int 作为参数传递时,python3 将解包字典并将字典中的关键字作为函数参数传递。

于 2021-05-19T03:56:33.507 回答
0

如果您无法从 wsdl 检索对象,请尝试以下操作:

client = Client(soap_url)
test_list = [1,2,3,4]
client.service.ServiceName({"foo": {"int": test_list}})

于 2019-12-16T12:41:21.557 回答