我正在使用zeep python 包,以便通过 SOAP 调用一个函数,该函数接受“ArrayofInt”类型的参数。
传递“普通”整数数组不起作用......解决方法是使用 for 循环遍历数组的元素并一个接一个地发送元素,但这不是我写过的最干净的代码: )
有什么建议么?
我正在使用zeep python 包,以便通过 SOAP 调用一个函数,该函数接受“ArrayofInt”类型的参数。
传递“普通”整数数组不起作用......解决方法是使用 for 循环遍历数组的元素并一个接一个地发送元素,但这不是我写过的最干净的代码: )
有什么建议么?
这个答案会帮你解决的。
使用 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)
如果您在 SOAP 服务中的方法接受整数数组作为参数,那么您可以尝试这种方式:
clientInt = Client(wsdl)
list_int=[1,2,3]
dict_int = {"ArrayOfInteger":{"integer":list_int}}
clientInt.service.getMultipleInt(**dict_int)
当您将 **dict_int 作为参数传递时,python3 将解包字典并将字典中的关键字作为函数参数传递。
如果您无法从 wsdl 检索对象,请尝试以下操作:
client = Client(soap_url)
test_list = [1,2,3,4]
client.service.ServiceName({"foo": {"int": test_list}})