0

数か月前、私は同じ質問をしましたが、ZSI の古いバージョンのコンテキストで ( Python で ZSI.ServiceProxy の送信および受信 SOAP メッセージを表示する方法は? )。現在、ZSI 2.1 の新しいバージョンにはtacefileパラメータがありません)。新しいバージョンのドキュメントを見つけようとしましたが、失敗しました。ZSI 2.1 によって生成および受信された SOAP メッセージを表示する方法を知っている人はいますか? 前もって感謝します :-)

4

2 に答える 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 に答える