PythonコードからSuds.WebFaultを発生させる方法は?

fault python raise suds
PythonコードからSuds.WebFaultを発生させる方法は?

PythonコードからSuds.WebFaultを発生させようとしています。 init method \ constructorは3つの引数` init(self、fault、document) `を取ります。 障害にはfault.faultcodeおよびfault.detail members \ attributes \ propertiesがあります。 どのクラスフォールトが、私が試したもののマットに属しているかを見つけることができませんでした。 PythonコードからSuds.WebFaultタイプの例外を発生させるにはどうすればよいですか?

前もって感謝します。

  5  0


ベストアンサー

正確に何を求めているのかわかりませんが、次を使用してWebフォールトをスローできます。

import suds

try:
    client.service.Method(parameter)
except suds.WebFault, e:
    print e

6


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を発生させるには、メッセージの最初のパラメーターとしてオブジェクトを渡す必要があります。 必要でない限り、ドキュメントは単純に「なし」にすることができます。

import suds

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

raise suds.WebFault(Fault(), document=None)

3


WebFaultは、Webサーバーから “要素が返されたときに実際に発生することのみを目的としています。 したがって、おそらく自分でそれを上げることは悪い考えです。

それでもやりたい場合は、フレームワークがそれを発生させるコードを見始めます:https://github.com/unomena/suds/blob/4e90361e13fb3d74915eafc1f3a481400c798e0e/suds/bindings/binding.py#L182
– そこから逆方向に作業します。

0


タイトルとURLをコピーしました