Servicios web con Python y .Net (2)
Pocos avances en la investigación de los servicios web, y la mayoria destinados a fracasar. Qué pena.
El camino inverso del que hablaba ayer ha sido más o menos igual de improductivo. Cree el servicio web con .Net (en C#, por supuesto) y lo puse a funcionar en el servidor IIS. Funciona perfecto con la llamada POST y mediante SOAP con un cliente creado a partir de una clase proxy (obtenida gracias a la herramienta wsdl.exe).
Aqui empiezan los problemas. El cliente Python intentando ejecutar el servicio web desarrollado en .Net no obtiene respuesta: sí que obtiene el mensaje SOAP de respuesta, lo que no obtiene es el resultado (EchoResponse es un nodo vacio). Investigando un poco con otro servicio web (un servicio Add) descubro que lo que en realidad sucede es que no quiere leer los argumentos pasados como parametros en el mensaje SOAP, a pesar que que el mensaje enviado sigue bastante fielmente al mensaje modelo que ofrece la ayuda autogenerada del servicio web. Creo que el problema esta en los namespaces XML, ya que es lo único que no coincide… seguiremos investigando pero una mejor documentación de SOAPpy no vendria mal.
El otro camino ha obtenido sus éxitos para luego acabar en fracaso. Mediante la clase proxy generada para el servicio web en .Net, pero apuntandola a la URI del servicio web en Python, consiguo que trasmita y reciba perfectamente. Además parece que el servicio web Python si que recibe los argumentos correctamente y devuelve el resultado esperado pero en un dict de XML Schema (Ouch!). Cambiando un poco el código de SOAPpy (ya que no conseguia adivinar las variables correctas de SOAP.Config) he conseguido que me devuelva un string en vez de un dict. A pesar de ello .Net recibe un array de objetos con un elemento, pero este elemento parece ser una referencia nula (cuando recibia el dict sucedia lo mismo, un elemento que era una referencia nula).
Parece ser que ni hacia un lado ni hacia el otro voy a conseguir una comunicación aceptable. ¿Empiezo a probar otras posibilidades? ¿Java y .Net? ¿Java y Python? Tambien puedo desarrollar el servicio web con Mono y utilizar para todo .Net con lo que problemas de incopatibilidad no habrá muchos… y de portabilidad… unos pocos pero superables.

