Wow, thanks a million, that has been very helpful and quick!
I'll be sure to inform the guys who made the SOAP service that their
WSDL is broken :)
Awesome that suds has a feature to workaround such issues. I've tried to
use the import doctor but I think I messed up the namespace when I look
at your example.
Anyway, thanks for the help, and keep up the great work!
Rudi
Jeff Ortel wrote:
Hey Rudi,
Glad to have you as a suds user.
WSDL-A = (tns="http://impl.search.webservices.core.gids.nl/",
location="https://webservices.gids2.nl/GidsV2Core/zoekservice?wsdl")
WSDL-B = (tns="http://search.webservices.core.gids.nl/",
location="https://webservices.gids2.nl/GidsV2Core/zoekservice?wsdl=zoekservice.wsdl")
WSDL-A imports WSDL-B which defines (9) schemas. WSDL-B is broken and
I'm not sure how 0.3.4 loaded it :) Anyway, the problem is that the
ninth schema ( tns="http://search.webservices.core.gids.nl/" ) defines
an element:
<xsd:element name="GidsException" type="ns2:GidsException"/>
which references the complex type "GitsException" but fails to import
the (
http://exceptions.core.gids.nl) namespace in which it is
defined. In my test case, I used the doctor to (runtime) patch the
schema as follows:
> from suds.client import Clientfrom suds.client import Client
> from suds.xsd.doctor import ImportDoctor, Import
> url = 'https://webservices.gids2.nl/GidsV2Core/zoekservice?wsdl'
> imp = Import('http://exceptions.core.gids.nl')
> imp.filter.add('http://search.webservices.core.gids.nl/')
> d = ImportDoctor(imp)
> client = Client(url, doctor=d)
>
And the wsdl loaded properly.
Hope this helps,
Jeff
Rudi Alberda wrote:
> Hey guys
>
> I'm having a problem when upgrading to the 0.3.6 version of suds. I
> used 0.3.4 before and the issue didn't happen then. It seems to be a
> problem with parsing the WSDL, but as far as I can tell there is
> nothing wrong with it (I think it's generated by the apache CFX
> framework).
> Can anyone provide me with some insight into what's going wrong? I've
> tried using the schema doctor as mentioned in the Tips&Tricks
> section, but to no avail.
>
> Here's what happens:
>
> >>> from suds.client import Client
> >>> client =
> Client('https://webservices.gids2.nl/GidsV2Core/zoekservice?wsdl')
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> File
> "/home/rual/workspace_drenthe/python-suds-0.3.6/suds/client.py", line
> 106, in __init__
> self.wsdl = Definitions(url, options)
> File "/home/rual/workspace_drenthe/python-suds-0.3.6/suds/wsdl.py",
> line 191, in __init__
> self.open_imports()
> File "/home/rual/workspace_drenthe/python-suds-0.3.6/suds/wsdl.py",
> line 237, in open_imports
> imp.load(self)
> File "/home/rual/workspace_drenthe/python-suds-0.3.6/suds/wsdl.py",
> line 341, in load
> d = Definitions(url, definitions.options)
> File "/home/rual/workspace_drenthe/python-suds-0.3.6/suds/wsdl.py",
> line 194, in __init__
> self.set_wrapped()
> File "/home/rual/workspace_drenthe/python-suds-0.3.6/suds/wsdl.py",
> line 303, in set_wrapped
> resolved = pt.resolve()
> File
> "/home/rual/workspace_drenthe/python-suds-0.3.6/suds/xsd/sxbasic.py",
> line 156, in resolve
> raise TypeNotFound(qref)
> suds.TypeNotFound: Type not found: '(GidsException,
>
http://exceptions.core.gids.nl, )'
>
>