2010-09-09 18 views
0

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)?

Répondre

3

Pour le débogage, j'ai trouvé moins de solution interférente utilisant wireshark pour tracer les paquets TCP. Il ressemble à ça:

alt text

+0

+1 parce que c'est une utilisation de Wireshark grand (et destiné!). – jathanism

1

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)