Ho il seguente script di test semplice che utilizza python Suds per chiamare un servizio SOAP Web (il servizio è scritto in ASP.net):Python/Suds: Non tipo trovato: 'xs: complexType'
from suds.client import Client
url = 'http://someURL.asmx?WSDL'
client = Client(url)
result = client.service.GetPackageDetails("MyPackage" )
print result
Quando eseguo questo script di test sto ottenendo il seguente errore (codice di markup utilizzato in quanto non va a capo):
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'
Guardando alla fonte per l'intestazione del file WSDL (riformattato per misura):
<?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/">
sto indovinando sulla base dell'ultima riga di output:
suds.TypeNotFound: Type not found: 'xs:complexType'
che ho bisogno di usare Sud di doctor class per fissare lo schema ma essendo un principiante SOAP non so cosa esattamente le esigenze fissate nel mio caso. Qualcuno qui ha esperienza usando Suds per correggere/correggere lo schema?
Ho appena provato una semplice applicazione di test C# e può connettersi a questo servizio (ma il servizio è basato su ASP.net). Potrebbe essere qualcosa di specifico di Microsoft che Suds non supporta di default? – Danielb
Sembra che il servizio stia tentando di restituire un DataSet. Sto vedendo quanto segue nella logger: ATTENZIONE: suds.bindings.unmarshaller: attributo (IsDataSet) tipo, non-trovato AVVERTENZA: suds.bindings.unmarshaller: attributo (nome) tipo, non ritrovata ERRORE: schiuma .bindings.unmarshaller: Schema: 0x7fce048c – Danielb
Mi sembra che SUDS non stia importando da un tag che specifica la struttura del set di dati. Hai cercato il tuo WSDL per le importazioni? Se questa è la risposta, l'ImportDoctor di SUDS dovrebbe essere in grado di aiutare. Esempi su https://fedorahosted.org/suds/wiki/Documentation#FIXINGBROKENSCHEMAs –
ewall