Hi again, took a while..
So I captured some stuffs. Turns out suds is sending the following:
<?xml
version="1.0"
encoding="UTF-8"
?>
<SOAP-ENV:Envelope
xmlns:ns3="http://www.w3.org/2001/XMLSchema"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns0="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns1="http://innovaphone.com/pbx"
xmlns:ns2="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Header/>
<ns2:Body>
<ns1:Initialize>
Hi,
it'd help us to understand the issue, if you'd capture the network traffic
with a tool like Wireshark or tcpdump, and post it to the mailing list with
any sensitive information (including the base64-encoded credentials in the
Authorization HTTP header) removed.
Regards,
András Veres-Szentkirályi
2011. november 30. szerda 15:40:44 dátummal Remy de Boer ezt írta:
> Hi,
>
> I'm trying to connect to the SOAP interface of an innovaphone system.
> I'm using the following code to connect to the WSDL file:
>
> from suds.client import Client
>
> > from suds.xsd.doctor import ImportDoctor, Import
> > from suds.transport.http import HttpAuthenticated
> >
> > imp = Import('http://schemas.xmlsoap.org/soap/encoding/')
> > imp.filter.add('http://innovaphone.com/pbx')
> > imp.filter.add('http://innovaphone.com/binding')
> >
> > d = ImportDoctor(imp)
> > url = 'http://localhost/pbx800.wsdl'
> > t = HttpAuthenticated(username='****', password='****')
> >
> > client = Client(url, transport=t, doctor=d)
> >
> > print client
> > print client.service.Version()
>
> The WSDL file I'm using is the same as at:
> http://www.innovaphone.com/wsdl/pbx800.wsdl
>
> With the 5th to last line (soap:address location) edited to point to our
> PBX server.
>
> running the above script results in the following error:
>
> File "sudstest.py", line 16, in <module>
>
> > print client.service.Version()
> >
> > File
> >
> > "/usr/lib/python2.6/site-packages/suds-0.4-py2.6.egg/suds/client.py",
> > line 542, in __call__
> >
> > return client.invoke(args, kwargs)
> >
> > File
> >
> > "/usr/lib/python2.6/site-packages/suds-0.4-py2.6.egg/suds/client.py",
> > line 602, in invoke
> >
> > result = self.send(soapenv)
> >
> > File
> >
> > "/usr/lib/python2.6/site-packages/suds-0.4-py2.6.egg/suds/client.py",
> > line 643, in send
> >
> > result = self.succeeded(binding, reply.message)
> >
> > File
> >
> > "/usr/lib/python2.6/site-packages/suds-0.4-py2.6.egg/suds/client.py",
> > line 678, in succeeded
> >
> > reply, result = binding.get_reply(self.method, reply)
> >
> > File
> >
> > "/usr/lib/python2.6/site-packages/suds-0.4-py2.6.egg/suds/bindings/bindin
> > g.py", line 149, in get_reply
> >
> > soapenv.promotePrefixes()
> >
> > AttributeError: 'NoneType' object has no attribute 'promotePrefixes'
>
> When I quote out the "print client.service.Version()" line, it displays all
> the methods from the WSDL file, but when I leave it uncommented, the "print
> client" line doesn't get printed before the error comes up.
>
> Any idea what's causing this error?
>
> I'm using python version 2.6.6 and suds version 0.4
>
> Thanks in advance!
>
> -Remy