Closed senseab closed 2 years ago
here is my code using
suds
with python#!/usr/bin/env python2 from suds.client import Client c = Client('http://localhost/namedmanager/api/namedmanager.wsdl') print c
it cannot work with exception
Traceback (most recent call last): File "test.py", line 5, in <module> c = Client('http://localhost/namedmanager/api/namedmanager.wsdl') File "/usr/lib/python2.6/site-packages/suds/client.py", line 112, in __init__ self.wsdl = reader.open(url) File "/usr/lib/python2.6/site-packages/suds/reader.py", line 152, in open d = self.fn(url, self.options) File "/usr/lib/python2.6/site-packages/suds/wsdl.py", line 151, in __init__ self.add_children(self.root) File "/usr/lib/python2.6/site-packages/suds/wsdl.py", line 177, in add_children child = Factory.create(c, self) File "/usr/lib/python2.6/site-packages/suds/wsdl.py", line 920, in create return fn(root, definitions) File "/usr/lib/python2.6/site-packages/suds/wsdl.py", line 435, in __init__ part = Part(p, definitions) File "/usr/lib/python2.6/site-packages/suds/wsdl.py", line 407, in __init__ self.type = self.__getref('type', tns) File "/usr/lib/python2.6/site-packages/suds/wsdl.py", line 415, in __getref return qualify(s, self.root, tns) File "/usr/lib/python2.6/site-packages/suds/xsd/__init__.py", line 56, in qualify raise Exception('prefix (%s) not resolved' % p) Exception: prefix (xsd1) not resolved
So is there any way to solve this?
I try to rewrite the wsdl file: add xmlns:xsd1="http://example.com/stockquote/schemas" to the definitions part & rewrite the fetch_domains fetch_records part
<?xml version='1.0' encoding='UTF-8'?> <definitions name="namedmanager" targetNamespace="https://target/namedmanager/api/namedmanager.wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="https://target/namedmanager/api/namedmanager.wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsd1="http://example.com/stockquote/schemas"
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="https://target/namedmanager/api/namedmanager.wsdl"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
<complexType name="fetch_domains_rows">
<all>
<element name="id" type="xsd:int"/>
<element name="domain_name" type="xsd:string"/>
<element name="domain_description" type="xsd:string"/>
<element name="soa_hostmaster" type="xsd:string"/>
<element name="soa_serial" type="xsd:int"/>
<element name="soa_refresh" type="xsd:int"/>
<element name="soa_retry" type="xsd:int"/>
<element name="soa_expire" type="xsd:int"/>
<element name="soa_default_ttl" type="xsd:int"/>
<element name="soa_ns_primary" type="xsd:string"/>
</all>
</complexType>
<complexType name="fetch_domains">
<sequence>
<element name="rows" type="tns:fetch_domains_rows" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
<complexType name="fetch_records_rows">
<all>
<element name="id_record" type="xsd:int"/>
<element name="record_name" type="xsd:string"/>
<element name="record_type" type="xsd:string"/>
<element name="record_content" type="xsd:string"/>
<element name="record_ttl" type="xsd:int"/>
<element name="record_prio" type="xsd:int"/>
</all>
</complexType>
<complexType name="fetch_records">
<sequence>
<element name="rows" type="tns:fetch_records_rows" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
</schema>
</types>
<message name='authenticate_request'>
<part name='server_name' type='xsd:string'/>
<part name='api_auth_key' type='xsd:string'/>
</message>
<message name='authenticate_response'>
<part name='return' type='xsd:int'/>
</message>
<message name='log_write_request'>
<part name='timestamp' type='xsd:int'/>
<part name='log_type' type='xsd:string'/>
<part name='log_content' type='xsd:string'/>
</message>
<message name='log_write_response'>
<part name='return' type='xsd:int'/>
</message>
<message name='check_update_version_response'>
<part name='version' type='xsd:int'/>
</message>
<message name='set_update_version_request'>
<part name='version' type='xsd:int'/>
</message>
<message name='set_update_version_response'>
<part name='return' type='xsd:int'/>
</message>
<message name='update_record_request'>
<part name="id_domain" type="xsd:int"/>
<part name="id_record" type="xsd:int"/>
<part name="record_name" type="xsd:string"/>
<part name="record_type" type="xsd:string"/>
<part name="record_content" type="xsd:string"/>
<part name="record_ttl" type="xsd:int"/>
<part name="record_prio" type="xsd:int"/>
</message>
<message name='update_record_response'>
<part name='return' type='xsd:int'/>
</message>
<message name='update_serial_request'>
<part name='id_domain' type='xsd:int'/>
</message>
<message name='update_serial_response'>
<part name='soa_serial' type='xsd:int'/>
</message>
<message name='fetch_domains_response'>
<part name='return' element='xsd1:fetch_domains'/>
</message>
<message name='fetch_records_request'>
<part name='domain_id' type='xsd:int'/>
</message>
<message name='fetch_records_response'>
<part name='return' element='xsd1:fetch_records'/>
</message>
<portType name='namedmanager_porttype'>
<operation name='authenticate'>
<input message='tns:authenticate_request'/>
<output message='tns:authenticate_response'/>
</operation>
<operation name='log_write'>
<input message='tns:log_write_request'/>
<output message='tns:log_write_response'/>
</operation>
<operation name='check_update_version'>
<output message='tns:check_update_version_response'/>
</operation>
<operation name='set_update_version'>
<input message='tns:set_update_version_request'/>
<output message='tns:set_update_version_response'/>
</operation>
<operation name='update_record'>
<input message='tns:update_record_request'/>
<output message='tns:update_record_response'/>
</operation>
<operation name='update_serial'>
<input message='tns:update_serial_request'/>
<output message='tns:update_serial_response'/>
</operation>
<operation name='fetch_domains'>
<output message='tns:fetch_domains_response'/>
</operation>
<operation name='fetch_records'>
<input message='tns:fetch_records_request'/>
<output message='tns:fetch_records_response'/>
</operation>
</portType>
<binding name='namedmanager_binding' type='tns:namedmanager_porttype'>
<soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
<operation name='authenticate'>
<soap:operation soapAction='namedmanager'/>
<input>
<soap:body use='encoded' namespace='urn:amberdms:namedmanager' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</input>
<output>
<soap:body use='encoded' namespace='urn:amberdms:namedmanager' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</output>
</operation>
<operation name='log_write'>
<soap:operation soapAction='namedmanager'/>
<input>
<soap:body use='encoded' namespace='urn:amberdms:namedmanager' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</input>
<output>
<soap:body use='encoded' namespace='urn:amberdms:namedmanager' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</output>
</operation>
<operation name='check_update_version'>
<soap:operation soapAction='namedmanager'/>
<output>
<soap:body use='encoded' namespace='urn:amberdms:namedmanager' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</output>
</operation>
<operation name='set_update_version'>
<soap:operation soapAction='namedmanager'/>
<input>
<soap:body use='encoded' namespace='urn:amberdms:namedmanager' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</input>
<output>
<soap:body use='encoded' namespace='urn:amberdms:namedmanager' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</output>
</operation>
<operation name='update_serial'>
<soap:operation soapAction='namedmanager'/>
<input>
<soap:body use='encoded' namespace='urn:amberdms:namedmanager' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</input>
<output>
<soap:body use='encoded' namespace='urn:amberdms:namedmanager' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</output>
</operation>
<operation name='update_record'>
<soap:operation soapAction='namedmanager'/>
<input>
<soap:body use='encoded' namespace='urn:amberdms:namedmanager' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</input>
<output>
<soap:body use='encoded' namespace='urn:amberdms:namedmanager' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</output>
</operation>
<operation name='fetch_domains'>
<soap:operation soapAction='namedmanager'/>
<output>
<soap:body use='encoded' namespace='urn:amberdms:namedmanager' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</output>
</operation>
<operation name='fetch_records'>
<soap:operation soapAction='namedmanager'/>
<input>
<soap:body use='encoded' namespace='urn:amberdms:namedmanager' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</input>
<output>
<soap:body use='encoded' namespace='urn:amberdms:namedmanager' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</output>
</operation>
</binding>
here is my code using
suds
with pythonit cannot work with exception
So is there any way to solve this?