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