Sobre SOAP
Joaquin Jose del Cerro Murciano
jjdelcerro en cenoclap.es
Vie Abr 23 08:31:04 CEST 2004
El Lunes, 19 de Abril de 2004 14:59, Pedro Javier Aljaro Velasco escribió:
> Hola a todos, me gustaría que alguien me pudiera dar información sobre
> un par de cosillas:
>
> - ¿Cómo se pueden enviar ficheros o archivos enteros usando
> SOAP (en este caso yo uso SOAPpy y python 2.2)? O algun otro metodo para
> poder enviarlos de un servicio cliente a un servicio servidor y
> viceversa, siempre utilizando SOAP
>
> - ¿Hay alguna forma de poder capturar la IP o alguna
> información más sobre las personas que utilizan un servicio web que se
> oferta? Es decir, yo ofrezco un servicio web mediante un script
> servidor, y me gustaría poder recopilar información de las máquinas que
> lo utilizan, como puede ser su IP, fecha y hora, localización, … Sería
> como un “web services metering”
>
> Espero vuestra ayuda y gracias de antemano
>
> Pedro Javier Aljaro Velasco
>
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
Hola,
Para lo de conseguir la IP y demas, puedes crear una clase que deribe de
SOAPRequestHandler, y sobreescribes el metodo do_POST. Ahi, tienes acceso al
self.rfile, que es el socket por el que se ha establecido la conexion, y
puedes tirar de los metodos del socket para haberiguar la ip origen (mira la
documentacion de la clase socket), sacar a logs lo que te interese e invocar
al do_POST de la superclase para que continue el precesado de la peticion.
Luego, cuando crees el server de SOAP, le pasas en el parametro RequestHandler
la clase request que has creado.
class MyRequestHandler(SOAPpy.Server.SOAPRequestHandler):
def do_POST(self):
guardar_en_el_log(self.rfile)
return SOAPpy.Server.SOAPRequestHandler.do_POST(self)
server = SOAPpy.Server.SOAPServer(
addr = XXXXX,
RequestHandler = MyRequestHandler,
...
)
Algo asi.
No lo he probado con el SOAPpy, pero mas o menos lo tengo funcionando asi con
XMLRPC.
Tomalo como una idea y a partir de ahi elabora tu propio codigo.
Un saludo
Joaquin
Más información sobre la lista de distribución Python-es