пена и тег выбора - PullRequest
4 голосов
/ 11 мая 2011

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

часть 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

Iсмотрите

GetMethod ()

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

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

Ответы [ 3 ]

5 голосов
/ 12 мая 2011

Это известная ошибка в suds https://fedorahosted.org/suds/ticket/342

1 голос
/ 28 декабря 2015

Я исправил это так:

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])
0 голосов
/ 11 мая 2011

Трудно понять, не видя весь wsdl, ваша ссылка на ваш локальный компьютер.

Класс клиента Suds использует Класс обслуживания в качестве переменной экземпляра для взаимодействия с wsdl.Вы пробовали что-то подобное? from suds.client import Client client = Client("http://127.0.0.1/service?wsdl") client.service.GetMethod("byA")

или

client.service.GetMethod("byB")

...