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/%22%3E SOAP-ENV:Header/ ns2:Body ns1:Initialize ns1:Initialize <user xsi:type="xsd:string">SOAP</user> <appl xsi:type="xsd:string">Python SOAP Wrapper</appl> <v xsi:type="xsd:boolean">true</v> <v501 xsi:type="xsd:boolean">true</v501> <v700 xsi:type="xsd:boolean">true</v700> <v800 xsi:type="xsd:boolean">true</v800> </ns1:Initialize> </ns2:Body> </SOAP-ENV:Envelope>
When I try to use the Initialize method of the WSDL file.
So what should be happening is that it uses SOAP-ENV:Body, but it's using ns2:Body instead, which is making the server not recognise the commands. I also don't understand why I have ns0 through ns3, is this something to do with the importdoctor?
-Remy
On 30 November 2011 17:09, Veres-Szentkiralyi Andras vsza@vsza.hu wrote:
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
- 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
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