[pyar] Enviar archivo via WebService SOAP
Mariano Reingart
reingart en gmail.com
Lun Sep 13 22:08:24 ART 2010
2010/9/13 Pablo Codeiro <cutrix2k en gmail.com>:
> Lo que querria hacer, es pasar datos de una aplicacion Java, a un servidor
> en Python, via SOAP.
> En el servidor, tenemos el siguiente codigo (de prueba, por supuesto que no
> es tan simple la cosa :P) para uno de sus metodos:
> @soapmethod(Attachment,_returns=String)
> def archive_document(self,document):
> fname = '/home/bla'
> document.fileName = fname
> document.save_to_file()
> return fname
Se me hace que estas usando soaplib.
En su momento, como nos parecieron complicadas esas bibliotecas,
desarrollamos una nueva (PySimpleSoap) justamente para poder ajustar y
depurar mejor las cosas.
> Del lado de Java, estamos encodeando un archivo, via Base64.
> Por algun motivo que escapa a nuestros conocimientos, el archivo que se
> envia desde java, al decodificarlo, python lo decodifica "mal" (o java lo
> codifica mal, que es otra de las posibilidades).
¿Podés enviar los mensajes XML (algun ejemplo) para tratar de ver que
está pasando?
¿Probaste probarlo con SoapUI?
> Mi pregunta en estos momentos es: ¿Estamos manejando bien el objeto
> Attachment?
Como te comentaba antes, no te sabría decir porque esa librería mucho
no la manejo
Pero para este caso puntual quizas te convenga analizar lo que
necesita Java y armar los XML manualmente con Python (que es lo que
hicimos nosotros usano xml.dom.minidom).
De nuevo, la librería que armamos te podría servir como punto de partida:
http://code.google.com/p/pysimplesoap/source/browse/server.py
También podés mandar un mensaje a soap en python.org, donde los
desarrolladores de esa librería (y otras), te pueden aconsejar mejor.
> ¿Hay alguna otra forma de realizarlo (ya sea con la clase Attachment, u
> otra) mientras siga siendo un WebService?
Podés encodearlo en base64 y pasarlo en un campo string común (que
igualmente sería parecido a lo que esta haciendo por detrás, pero de
manera explicita y controlable).
Es mucho más fácil y compatible, y de hecho eso es lo que hizo la
AFIP, por ej. en el caso del web service de factura electrónica, para
enviarle los datos de acceso (un xml firmados digitalmente):
http://code.google.com/p/pyafipws/source/browse/wsaa.py
> Muchas gracias por la buena onda, mariano!
De nada :-)
Sds
Mariano Reingart
http://www.sistemasagiles.com.ar
http://reingart.blogspot.com
More information about the pyar
mailing list