将python数组int转换为SOAP ArrayofInt

时间:2017-08-28 07:45:59

标签: python web-services soap xsd zeep

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

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

有什么建议吗?

3 个答案:

答案 0 :(得分:3)

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)

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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

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