6

我正在尝试从 python 代码中引发 Suds.WebFault。__init__方法\构造函数接受三个参数__init__(self, fault, document)。故障有 fault.faultcode 和 fault.detail members\attributes\properties。无论我尝试了什么,我都找不到属于哪个类错误。如何从 python 代码中引发 Suds.WebFault 类型异常?

提前致谢。

4

3 回答 3

6

不确定您到底在问什么,但您可以使用以下方法引发网络故障:

import suds

try:
    client.service.Method(parameter)
except suds.WebFault, e:
    print e
于 2011-04-15T15:54:55.290 回答
4

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)
于 2016-08-11T11:15:16.737 回答
0

WebFault 仅<Fault>在 Web 服务器返回元素时才被实际引发。所以自己提出这个问题可能是个坏主意。

如果您仍然愿意,我将开始查看框架引发它的代码:https ://github.com/unomena/suds/blob/4e90361e13fb3d74915eafc1f3a481400c798e0e/suds/bindings/binding.py#L182 - 然后从那里。

于 2016-03-16T13:06:15.623 回答