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

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

часть wsdl по адресу http://127.0.0.1/service?wsdl:

<хз: последовательность>...<хз: последовательность>...<Хз: выбор>

когда я делаю

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

я вижу

GetMethod()

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

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

3 ответа

Решение

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

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

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])

Трудно понять, не видя весь 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")

Другие вопросы по тегам