Как отобразить исходящее и входящее SOAP-сообщение для ZSI.ServiceProxy в Python (версия 2.1)? - PullRequest
0 голосов
/ 09 сентября 2010

Пару месяцев назад я задавал тот же вопрос, но в контексте более старой версии ZSI ( Как отобразить исходящее и входящее сообщение SOAP для ZSI.ServiceProxy в Python? ).Теперь в новой версии ZSI 2.1 отсутствует параметр tacefile).Я пытался найти документацию для новой версии, но мне не удалось. Кто-нибудь знает, как отображать сообщения SOAP, сгенерированные и полученные ZSI 2.1? Заранее спасибо: -)

Ответы [ 2 ]

3 голосов
/ 09 сентября 2010

Для отладки я нашел менее мешающее решение, использующее wireshark для отслеживания пакетов TCP.Это выглядит так:

alt text

1 голос
/ 09 сентября 2010

У меня была такая же проблема.Мой обходной путь - изменить файл dispatch.py, поставляемый с ZSI.

Я создал функцию ведения журнала (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)
...