2010-08-09 10 views
1

J'ai un webservice Python utilisant SOAPpy. Le serveur webservice est structuré comme indiqué ci-dessous:Lors de l'utilisation de SOAPServer soappy, comment lire les en-têtes de la demande?

class myClass: 
    def hello(): 
    return 'world' 

if __name__ == "__main__": 
    server = SOAPServer(('localhost', 8888)) 
    myObject = myClass() 
    namespace = 'whatever::namespace' 
    server.registerObject(myObject, namespace) 
    server.serve_forever() 

Si un client appelle la méthode hello() de mon webservice, comment puis-je lire les en-têtes, donc je peux commencer à vous connecter quelques informations (par exemple: adresse IP) pour le débogage ?

Répondre

2

Est-ce que vous voulez faire l'enregistrement dans votre méthode de bonjour? Voici un exemple minimal qui montre comment transmettre les informations SOAPContext (qui peuvent vous donner une partie de ces informations) dans l'appel de fonction/méthode:

from SOAPpy import * 

def hello(_SOAPContext = None): 
    return "Your IP address is %s" % _SOAPContext.connection.getpeername()[0] 

if __name__ == "__main__": 
    server = SOAPServer(('10.3.40.104', 8080)) 
    server.registerFunction(MethodSig(hello, keywords=0, context=1)) 
    server.serve_forever() 
1

vous pouvez ajouter un RequestHandler à l'objet SoapServer qui étend la SOAPRequestHandler et remplace la HeaderHandler (un coup d'oeil à la source de server.py pour un exemple)