49

次のコードがあります。

from suds.client import Client
import logging

logging.basicConfig(level=logging.INFO)
logging.getLogger('suds.client').setLevel(logging.DEBUG)
logging.getLogger('suds.transport').setLevel(logging.DEBUG)
logging.getLogger('suds.xsd.schema').setLevel(logging.DEBUG)
logging.getLogger('suds.wsdl').setLevel(logging.DEBUG)

SB_PRIVATE_ACCESS = {"PATH":"https://thisurl.com:443/services/",}

client = Client(SB_PRIVATE_ACCESS['PATH'])
print client

しかし、500エラーが発生しています。SUD を介して生成および受信されている XML を wsdl 開発者に送信しようとしていますが、出力方法がわかりません。SUD のドキュメントを調べましたが、見つからないようです :/ 送受信される生の xml を出力する方法を知っている人はいますか?

4

7 に答える 7

76

SUDS は、それを行うためのいくつかの便利なメソッドを提供します。

 client.last_sent()
 client.last_received()

これらは、必要なものを提供するはずです。エラーログに使用します。 Client クラスの API ドキュメントには、必要な追加情報が含まれているはずです。

于 2011-05-20T07:59:04.220 に答える
20

MessagePlugin を使用してこれを行うことができます (これは、last_sent と last_received が削除された新しい Jurko フォークで機能します)。

from suds.plugin import MessagePlugin

class LogPlugin(MessagePlugin):
  def sending(self, context):
    print(str(context.envelope))
  def received(self, context):
    print(str(context.reply))

client = Client("http://localhost/wsdl.wsdl", plugins=[LogPlugin()])
于 2014-06-05T15:53:14.943 に答える
3

変更してみてください

logging.basicConfig(level=logging.INFO)

logging.basicConfig(filename="/tmp/suds.log", level=logging.DEBUG)
于 2011-06-08T15:15:59.983 に答える
1

bingads API でこの問題が発生しました。順序が重要であることに注意してください。ログをインポートしてから、suds をインポートしてログを開始し、bingads をインポートする必要がありました。他の順序では、suds からログに何も出力されませんでした。

したがって、インポート順序を確認し、ログ ステートメントを移動すると、問題が解決する場合があります。

于 2018-05-21T15:50:58.037 に答える