我正在尝试从 python 代码中引发 Suds.WebFault。__init__
方法\构造函数接受三个参数__init__(self, fault, document)
。故障有 fault.faultcode 和 fault.detail members\attributes\properties。无论我尝试了什么,我都找不到属于哪个类错误。如何从 python 代码中引发 Suds.WebFault 类型异常?
提前致谢。
不确定您到底在问什么,但您可以使用以下方法引发网络故障:
import suds
try:
client.service.Method(parameter)
except suds.WebFault, e:
print e
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)
WebFault 仅<Fault>
在 Web 服务器返回元素时才被实际引发。所以自己提出这个问题可能是个坏主意。
如果您仍然愿意,我将开始查看框架引发它的代码:https ://github.com/unomena/suds/blob/4e90361e13fb3d74915eafc1f3a481400c798e0e/suds/bindings/binding.py#L182 - 然后从那里。