Как поднять Suds.WebFault из кода Python? - PullRequest
5 голосов
/ 13 апреля 2011

Я пытаюсь поднять Suds.WebFault из кода Python. Метод \ 1001 * method \ constructor принимает три аргумента __init__(self, fault, document). Ошибка имеет код ошибки.fault и свойства. Я не мог выяснить, к какому классу относится вина, не то, что я пытался. Как вызвать исключение типа Suds.WebFault из кода Python?

Заранее спасибо.

Ответы [ 3 ]

6 голосов
/ 15 апреля 2011

Не уверен, что именно вы спрашиваете, но вы можете сбросить ошибку сети, используя:

import suds

try:
    client.service.Method(parameter)
except suds.WebFault, e:
    print e
3 голосов
/ 11 августа 2016

WebFault определяется в suds.__init__.py как:

class WebFault(Exception):
    def __init__(self, fault, document):
        if hasattr(fault, 'faultstring'):
            Exception.__init__(self, u"Server raised fault: '%s'" %
                fault.faultstring)
        self.fault = fault
        self.document = document

Поэтому, чтобы вызвать WebFault со значимым сообщением, вам нужно будет передать объект в качестве первого параметра сообщения.Документ может быть просто None, если не требуется.

import suds

class Fault(object): 
    faultstring = 'my error message'

raise suds.WebFault(Fault(), document=None)
0 голосов
/ 16 марта 2016

WebFault предназначен только для фактического вызова, когда веб-сервер возвращает элемент <Fault>.Так что, вероятно, это плохая идея - поднимать это самостоятельно.

Если вы все еще хотели бы, я бы начал смотреть на код, в котором фреймворк его поднимает: https://github.com/unomena/suds/blob/4e90361e13fb3d74915eafc1f3a481400c798e0e/suds/bindings/binding.py#L182 - и работал бы в обратном направлении.

...