2010-05-25 3 views
0

Je veux faire un serveur web très simple en python capable de recevoir du document XML via HTTP et ensuite d'envoyer en réponse un document XML.Réception de document XML avec python via HTTP

Avez-vous un exemple?

juste pour comprendre comment organiser le travail ...

un grand merci!

MISE À JOUR:

Je besoin de quelque chose comme ceci:

un client faire un post avec un document xml: < demande> nom <> plus </name> < param> 2 </param> < param> 3 </param> </demande> »

les réponses du serveur python: réponse <> < résultat> OK </Résultat> < résultats> 5 </résultat> </réponse>

Avez-vous un exemple pour ce genre de choses ??

+0

"Normal" HTTP (une requête GET par exemple) ou une construction similaire à SOAP/XML? – extraneon

+0

Python de base (BaseHTTPServer et amis), ou sont des cadres comme tordu aussi bienvenue? – extraneon

Répondre

1

Vous pouvez utiliser XMLRPC:

SimpleXMLRPCServer Exemple (à partir de Python Docs)

Code Serveur:

from SimpleXMLRPCServer import SimpleXMLRPCServer 
from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler 

# Restrict to a particular path. 
class RequestHandler(SimpleXMLRPCRequestHandler): 
    rpc_paths = ('/RPC2',) 

# Create server 
server = SimpleXMLRPCServer(("localhost", 8000), 
          requestHandler=RequestHandler) 
server.register_introspection_functions() 

# Register pow() function; this will use the value of 
# pow.__name__ as the name, which is just 'pow'. 
server.register_function(pow) 

# Register a function under a different name 
def adder_function(x,y): 
    return x + y 
server.register_function(adder_function, 'add') 

# Register an instance; all the methods of the instance are 
# published as XML-RPC methods (in this case, just 'div'). 
class MyFuncs: 
    def div(self, x, y): 
     return x // y 

server.register_instance(MyFuncs()) 

# Run the server's main loop 
server.serve_forever() 

Le code client suivant appellera les méthodes mises à disposition par le serveur précédent:

import xmlrpclib 

s = xmlrpclib.ServerProxy('http://localhost:8000') 
print s.pow(2,3) # Returns 2**3 = 8 
print s.add(2,3) # Returns 5 
print s.div(5,2) # Returns 5//2 = 2 

# Print list of available methods 
print s.system.listMethods()