tengo el siguiente guión de prueba pitón que utiliza Suds llamar a un servicio web SOAP (el servicio está escrito en ASP.net):Python/espuma: no tipo que se encuentra: 'xs: complexType'
from suds.client import Client
url = 'http://someURL.asmx?WSDL'
client = Client(url)
result = client.service.GetPackageDetails("MyPackage" )
print result
Cuando ejecuto este script de prueba que estoy recibiendo el siguiente error (se utiliza el marcado de código, ya que no se ajusta):
No handlers could be found for logger "suds.bindings.unmarshaller"
Traceback (most recent call last):
File "sudsTest.py", line 9, in <module>
result = client.service.GetPackageDetails("t3db" )
File "build/bdist.cygwin-1.5.25-i686/egg/suds/client.py", line 240, in __call__
File "build/bdist.cygwin-1.5.25-i686/egg/suds/client.py", line 379, in call
File "build/bdist.cygwin-1.5.25-i686/egg/suds/client.py", line 240, in __call__
File "build/bdist.cygwin-1.5.25-i686/egg/suds/client.py", line 422, in call
File "build/bdist.cygwin-1.5.25-i686/egg/suds/client.py", line 480, in invoke
File "build/bdist.cygwin-1.5.25-i686/egg/suds/client.py", line 505, in send
File "build/bdist.cygwin-1.5.25-i686/egg/suds/client.py", line 537, in succeeded
File "build/bdist.cygwin-1.5.25-i686/egg/suds/bindings/binding.py", line 149, in get_reply
File "build/bdist.cygwin-1.5.25-i686/egg/suds/bindings/unmarshaller.py", line 303, in process
File "build/bdist.cygwin-1.5.25-i686/egg/suds/bindings/unmarshaller.py", line 88, in process
File "build/bdist.cygwin-1.5.25-i686/egg/suds/bindings/unmarshaller.py", line 104, in append
File "build/bdist.cygwin-1.5.25-i686/egg/suds/bindings/unmarshaller.py", line 181, in append_children
File "build/bdist.cygwin-1.5.25-i686/egg/suds/bindings/unmarshaller.py", line 104, in append
File "build/bdist.cygwin-1.5.25-i686/egg/suds/bindings/unmarshaller.py", line 181, in append_children
File "build/bdist.cygwin-1.5.25-i686/egg/suds/bindings/unmarshaller.py", line 104, in append
File "build/bdist.cygwin-1.5.25-i686/egg/suds/bindings/unmarshaller.py", line 181, in append_children
File "build/bdist.cygwin-1.5.25-i686/egg/suds/bindings/unmarshaller.py", line 102, in append
File "build/bdist.cygwin-1.5.25-i686/egg/suds/bindings/unmarshaller.py", line 324, in start
suds.TypeNotFound: Type not found: 'xs:complexType'
en cuanto a la fuente de la cabecera del archivo WSDL (reformateado para encajar):
<?xml version="1.0" encoding="utf-8" ?>
<wsdl:definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="http://http://someInternalURL/webservices.asmx"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
targetNamespace="http://someURL.asmx"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
supongo que seguirán basándose en la última línea de la salida:
suds.TypeNotFound: Type not found: 'xs:complexType'
que necesito utilizar Sud de doctor class para fijar el esquema pero al ser un novato de SOAP no sé qué es exactamente necesidades fijos en mi caso. ¿Alguien aquí tiene alguna experiencia en el uso de Suds para corregir/corregir el esquema?
Acabo de probar una aplicación de prueba C# simple y se puede conectar a este servicio bien (pero luego el servicio está basado en ASP.net). ¿Podría ser algo específico de Microsoft que Suds no admite por defecto? – Danielb
Parece que el servicio está intentando devolver un DataSet. Estoy viendo lo siguiente en el registrador: ADVERTENCIA: suds.bindings.unmarshaller: atributo (IsDataSet) tipo, no encontrado ADVERTENCIA: suds.bindings.unmarshaller: tipo de atributo (nombre), no encontrado ERROR: espuma .bindings.unmarshaller: Schema: 0x7fce048c – Danielb
Me parece que SUDS no está importando desde una etiqueta que especifica la estructura del conjunto de datos. ¿Ha buscado en su WSDL para importar? Si esa es la respuesta, entonces ImportDoctor de SUDS debería ser capaz de ayudar. Ejemplos en https://fedorahosted.org/suds/wiki/Documentation#FIXINGBROKENSCHEMAs –
ewall