Il ya quelques mois, j'ai posé la même question, mais dans le contexte de l'ancienne version de ZSI (How to display outcoming and incoming SOAP message for ZSI.ServiceProxy in Python?). Maintenant, dans la nouvelle version de ZSI 2.1, il n'y a pas de paramètre tacefile
). J'ai essayé de trouver une documentation pour la nouvelle version mais j'ai échoué. Est-ce que quelqu'un sait comment afficher les messages SOAP générés et reçus par ZSI 2.1? Merci d'avance :-)Comment afficher le message SOAP entrant et entrant pour ZSI.ServiceProxy en Python (version 2.1)?
Comment afficher le message SOAP entrant et entrant pour ZSI.ServiceProxy en Python (version 2.1)?
Répondre
Pour le débogage, j'ai trouvé moins de solution interférente utilisant wireshark pour tracer les paquets TCP. Il ressemble à ça:
J'ai eu ce même problème. Ma solution de contournement consistait à modifier le fichier dispatch.py fourni avec ZSI.
J'ai créé une fonction de journalisation (logmessage) pour mon application qui stockait les messages SOAP dans une base de données et ajoutait ensuite cette fonction si nécessaire. Je ne me souviens pas de la version ZSI que j'utilisais cependant. Vous devriez être capable de trouver ces fonctions assez facilement dans le code. J'avé nombre L approximatif que j'ai fait d'autres modifications
dans le fichier Dispatch.py dans votre site-packages répertoire
L156 - enregistre les réponses 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 - enregistre les erreurs SOAP
def _ModPythonSendFault(f, **kw):
logmessage(str(f.AsSOAP()), 1, kw['request'].get_remote_host()) #LOGGING ADDED HERE
_ModPythonSendXML(f.AsSOAP(), 500, **kw)
L277 - demandes de consignation
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)
+1 parce que c'est une utilisation de Wireshark grand (et destiné!). – jathanism