如何在Python(版本2.1)中显示ZSI.ServiceProxy的传出和传入SOAP消息?

时间:2010-09-09 12:16:26

标签: python soap zsi

几个月前,我问了同样的问题,但是在旧版ZSI(How to display outcoming and incoming SOAP message for ZSI.ServiceProxy in Python?)的背景下。现在,在新版本的ZSI 2.1中没有tacefile参数)。我试图找到新版本的文档,但我发现了。 有谁知道如何显示ZSI 2.1生成和接收的SOAP消息?提前谢谢: - )

2 个答案:

答案 0 :(得分:3)

对于调试,我发现使用wireshark跟踪TCP包的干扰解决方案较少。它看起来像是:

alt text

答案 1 :(得分:1)

我有同样的问题。我的解决方法是修改ZSI附带的dispatch.py​​文件。

我为我的应用程序创建了一个日志记录功能(logmessage),它将SOAP消息存储到数据库中,然后在必要时添加该功能。我不记得我正在使用的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)