Пена и тэг выбора

как сгенерировать запрос к методу с аргументами "выбор"?

часть wsdl в http://127.0.0.1/service?wsdl:

<xs:complexType name="ByA">
<xs:sequence>
...
</xs:sequence>
</xs:complexType>
<xs:complexType name="ByB">
<xs:sequence>
...
</xs:sequence>
</xs:complexType>

<xs:complexType name="GetMethodRequest">
<xs:choice>
<xs:element name="byA" type="s0:ByA" />
<xs:element name="byB" type="s0:ByB" />
</xs:choice>
</xs:complexType>

когда я это делаю


from suds.client import Client
client = Client("http://127.0.0.1/service?wsdl")
print client

Я вижу

GetMethod()

без каких-либо аргументов.

как я могу вызвать GetMethod с помощью byA или withB?

Ответ 2

Я зафиксировал его так:

class MyPlugin(DocumentPlugin):
    def setChoice(self, context):
        if not context.children:
            return
        for i in context.children:
            if i.name == "choice":
                for j in i.children:
                    i.parent.append(j)
            else:
                self.setChoice(i)

    def parsed(self, context):
        self.setChoice(context.document)


plugin = MyPlugin()
client = Client("http://127.0.0.1/service?wsdl", plugins=[plugin])

Ответ 3

Не знаю, не увидев весь wsdl, ваша ссылка на вашу локальную машину.

Класс Suds Client использует Service Class как переменную экземпляра для взаимодействия с wsdl. Вы пробовали что-то вроде этого?


from suds.client import Client
client = Client("http://127.0.0.1/service?wsdl")
client.service.GetMethod("byA")

или

client.service.GetMethod("byB")