Python - Suds0.4 - сложные аргументы тела SOAP - PullRequest
0 голосов
/ 23 марта 2011

Я пытаюсь подключить клиента Python - через SUDS0.4 - к серверу SOAP. Обычно, чтобы предоставить сложный аргумент функции SOAP, я использую словарь Python: Пример, если аргумент SOAP выглядит так:

<parameterDesignatorValuePair>
<parameterDesignator>Message</parameterDesignator>
<parameterValue>AAAABgBDAG8AdQBjAG8AdQ==</parameterValue>
</parameterDesignatorValuePair>

Мой код Python выглядит так:

result = client.service.myfunction(parameterDesignatorValuePair={'parameterDesignator':val1,'parameterValue':val2})

Теперь я пытаюсь подключиться к SOAP-серверу, который я не запрограммировал, но я знаю, как тело SOAP моего запроса должно выглядеть из существующего Java-клиента: (часть интереса)

...
<parameterDesignatorValuePairSet>
<parameterDesignatorValuePair>
<parameterDesignator>Message</parameterDesignator>
<parameterValue>AAAABgBDAG8AdQBjAG8AdQ==</parameterValue>
</parameterDesignatorValuePair>
<parameterDesignatorValuePair>
<parameterDesignator>Sender</parameterDesignator>
<parameterValue>AAAABwBSAGUAbgBhAHUAbABk</parameterValue>
</parameterDesignatorValuePair>
</parameterDesignatorValuePairSet>
...

Поэтому мне нужно передать сложный аргумент "parameterDesignatorValuePairSet", состоящий из двух комплексных аргументов, которые имеют одинаковое имя "parameterDesignatorValuePair": я не могу сделать это с помощью словаря Python: - (

Я пытался использовать list и tuple, но SUDS возвращает мне ошибки ...

Спасибо за помощь

1 Ответ

1 голос
/ 30 марта 2011

Вы пытались просто сделать это:

param = client.factory.create('ns1:parameterDesignatorValuePairNamespace')
param.parameterDesignator = val1
param.parameterValue = val2

client.service.FunctionName(param)

Пространства имен доступны при печати файла WSDL после подключения SUDS.

...