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​​ 文件。

我为我的应用程序创建了一个日志记录函数 (logmessage),它将 SOAP 消息存储到数据库中,然后在必要时添加了该函数。我不记得我使用的 ZSI 版本。不过,您应该能够很容易地在代码中找到这些函数。因为我进行了其他编辑,所以我有近似 L 数

在站点包目录中的 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 回答