几个月前,我问过同样的问题,但在旧版本 ZSI 的上下文中(如何在 Python 中显示 ZSI.ServiceProxy 的输出和传入 SOAP 消息?)。现在,在 ZSI 2.1 的新版本中没有tacefile
参数)。我试图找到新版本的文档,但失败了。有谁知道如何显示 ZSI 2.1 生成和接收的 SOAP 消息?先感谢您 :-)
问问题
767 次
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 回答