数か月前、私は同じ質問をしましたが、ZSI の古いバージョンのコンテキストで ( Python で ZSI.ServiceProxy の送信および受信 SOAP メッセージを表示する方法は? )。現在、ZSI 2.1 の新しいバージョンにはtacefile
パラメータがありません)。新しいバージョンのドキュメントを見つけようとしましたが、失敗しました。ZSI 2.1 によって生成および受信された SOAP メッセージを表示する方法を知っている人はいますか? 前もって感謝します :-)
2 に答える
3
デバッグのために、wireshark を使用して TCP パッケージをトレースすることで、干渉の少ないソリューションを見つけました。次のようになります。
于 2010-09-09T15:23:34.903 に答える
1
私はこれと同じ問題を抱えていました。私の回避策は、ZSI に付属の dispatch.py ファイルを変更することでした。
SOAP メッセージをデータベースに保存するアプリ用のロギング関数 (logmessage) を作成し、必要に応じてその関数を追加しました。ただし、使用していた ZSI のバージョンは覚えていません。ただし、これらの関数はコード内で簡単に見つけることができるはずです。他の編集を行ったので、おおよその L 数があります
site-packages ディレクトリの Dispatch.py ファイル
L156 - SOAP 応答をログに記録します
def _Dispatch(tons-of-args, **kw):
#several lines of code edited here#
#several lines of code edited here#
#several lines of code edited here#
sw = SoapWriter(nsdict=nsdict)
sw.serialize(result, tc)
logmessage( str(sw), 1, kw['request'].get_remote_host() ) #LOGGING HERE
L168 - SOAP エラーをログに記録します
def _ModPythonSendFault(f, **kw):
logmessage( str(f.AsSOAP()), 1, kw['request'].get_remote_host() ) #LOGGING ADDED HERE
_ModPythonSendXML(f.AsSOAP(), 500, **kw)
L277 - ログ要求
def AsHandler(request=None, modules=None, **kw):
'''Dispatch from within ModPython.'''
a = request.read(-1)
logmessage( a, 0, request.get_remote_host() ) #LOGGING ADDED HERE
ps = ParsedSoap(a)
kw['request'] = request
_Dispatch(ps, modules, _ModPythonSendXML, _ModPythonSendFault, **kw)
于 2010-09-09T14:05:07.390 に答える