Sobre SOAP

Joaquin Jose del Cerro Murciano jjdelcerro en cenoclap.es
Vie Abr 23 08:00:19 CEST 2004


El Lunes, 19 de Abril de 2004 17:39, Francesc Alted escribió:
> A Dilluns 19 Abril 2004 14:59, Pedro Javier Aljaro Velasco va escriure:
> > 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
>
> Por que no lo metes en una lista de strings y lo envias? Si prefieres,
> puedes usar un string "a pelo" para meter todo el fichero (después,
> simplemente usas las marcas \r\n para desempaquetarlo correctamente).
>
> > -          ¿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”
>
> Supongo que habrá varias maneras. Yo uso ZSI combinado con mod-python y
> Apache, y por tanto, es mod-python quien se encarga de dar la información
> accediendo a las tablas internas de Apache (Connection object). Aunque si
> usas otros servidores web o Soap en standalone esto no te sirve.
>
> Saludos,

Hola, 
Yo no suelo gastor SOAP, uso XMLRPC, pero me he encontrado con esos
mismo problemas. Ahi van un par de ideas:

Respecto a lo de enviar ficheros, lo de meterlos como strings a pelo me dio 
muchos doleres de cabeza, dependiendo del contenido del fichero el XML 
resultante se me destrozaba. Resulto menos malo embiarlos codificados en 
base64.
	import base64

	f = file("nombre")
	s = read(f)
	f.close()
	s = base64.encodestring(s)

Y para recuperarlo usar base64.decodestring.
De todos modos, aunque asi te ira, no es lo mas optimo en cuanto a 
rendimientos, ya que si el fichero es muy largo sobrecargas mucho el 
"parseado" del XML.

Respecto a lo de saver quien te llama a tus servicios web, en XMPRPC, y por lo 
que recuerdo de SAP tambien), puedes subirte a la chepa de las funciones que 
registras en tu servidor o crear tu propia clase servidor. Si lo haces de la 
primera forma no encontre manera de recopilar esa informacion. Creando tu 
servidor tienes acceso a el socket y a partir de el puedes obtener casi todo 
lo que necesites. Voy a ver si me bajo el SOAPpy y te doy alguna pista de 
como hacerlo.

Un saludo
Joaquin

	




Más información sobre la lista de distribución Python-es