example desde consumir python soap suds

desde - soap wsdl python



Usando SUDS para probar WSDL (3)

La conexión rechazada indica que el servidor no está allí. ¿Puede acceder a http://10.51.54.50/ptz.wsdl en un navegador o mediante curl? De lo contrario, comience por ejecutar el servicio SOAP primero y luego vuelva a intentarlo.

¿Alguien sabe sobre un buen tutorial de SUDS? Estoy tratando de ejecutar pruebas en archivos WSDL y tengo problemas para encontrar cualquier información sobre cómo hacer esto. Es SUDS muy diferente a SOAPy y cualquiera lo recomendaría para ejecutar pruebas de humo en funciones almacenadas en archivos WSDL.

He leído que SOAPAy ya no es compatible con Python 2.6+. ¿Es esto cierto?

Tengo un archivo WSDL que he ingresado:

from suds.client import Client client = Client(''http://10.51.54.50/ptz.wsdl'') client.service.GetNode()

Tengo este error:

in open response = self._open(req, data) File "/home/build/workspace/downloads/Python-2.6.4/Lib/urllib2.py", line 407, in _open ''_open'', req) File "/home/build/workspace/downloads/Python-2.6.4/Lib/urllib2.py", line 367, in _call_chain result = func(*args) File "/home/build/workspace/downloads/Python-2.6.4/Lib/urllib2.py", line 1146, in http_open return self.do_open(httplib.HTTPConnection, req) File "/home/build/workspace/downloads/Python-2.6.4/Lib/urllib2.py", line 1121, in do_open raise URLError(err) urllib2.URLError: <urlopen error [Errno 111] Connection refused>

¿Alguien sabe por qué ocurre esto?

Puedo conectarme a este archivo a través de mi navegador. He instalado todos los paquetes de espuma. ¿Se requiere alguna otra configuración?


Suds es muy simple de usar.

from suds.client import Client client = Client("http://example.com/foo.wsdl") client.service.someMethod(someParameter)

someMethod es el nombre de un método como se describe en WSDL.


En mi caso, fue un error estúpido (como cualquier otro error).

La URL que había usado para inicializar mi servicio era algo así como

Uri httpUri = new Uri("http://localhost:8000/CalculatorService");

Pude acceder a este servicio desde un cliente python que se ejecuta en la misma máquina que el servicio. Pude navegar el wsdl desde un navegador tanto localmente como desde una máquina remota. Sin embargo, cuando intenté acceder a este servicio desde una máquina remota, recibí un error de conexión rechazada. Lo extraño fue que en wireshark, pude ver que el servicio devuelve el wsdl al cliente remoto. Después de perder un par de horas, habilité el registro

logging.getLogger(''suds.client'').setLevel(logging.DEBUG) logging.getLogger(''suds.transport'').setLevel(logging.DEBUG) logging.getLogger(''suds.xsd.schema'').setLevel(logging.DEBUG) logging.getLogger(''suds.wsdl'').setLevel(logging.DEBUG)

Los registros mostraron que las suds descargaron el wsdl del servidor, pero después de eso, intentaron conectarse a localhost: 8000. Y eso explicaba que la conexión rechazó el error. Acabo de cambiar el URI en el servidor WCF para

Uri httpUri = new Uri("http://192.168.0.1:8000/CalculatorService");

Y eso resolvió mi problema