将 python 个 int 数组转换为 SOAP ArrayofInt

Convert python array of int to SOAP ArrayofInt

我正在使用 zeep python package 以便通过接受 'ArrayofInt' 类型参数的 SOAP 调用函数。

传递 'normal' 整数数组不起作用...解决方法是 运行 使用 for 循环遍历数组的元素并逐个发送元素但是这不是我写过的最干净的代码:)

有什么建议吗?

answer 将为您解决问题。

使用 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)

如果您无法从 wsdl 检索对象,试试这个:

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

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

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

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