A
Adam Tauno Williams
SUDS version 0.4 pn x86_64 Python 2.7
I'm having a bear of a time getting HTTP Basic Authentication to work
for a SOAP request via suds. Also using an HTTP proxy server.
In WireShark I just see a request -
GET http://...../services/services/JobService-0.0.1?wsdl HTTP/1.1
Accept-Encoding: identity
Host: .......
Connection: close
User-Agent: Python-urllib/2.7
This doesn't contain any authentication credentials so the response is
HTTP/401, and the client doesn't retry with credentials. The response
does come from the remote as I can see there is a WWW-Authenticate
header and it is from an Apache Tomcat server - so it makes it through
the proxy server.
Code
================
url = 'http://....../services/services/JobService-0.0.1?wsdl'
proxy = urllib2.ProxyHandler({'http': 'http://.....:3128'})
transport = suds.transport.http.HttpAuthenticated()
transport.urlopener = urllib2.build_opener(proxy)
client = suds.client.Client(url, transport=transport,
username='******', password='********')
.....
I've tried the above as well as the method described at
<http://blogs.oucs.ox.ac.uk/inapickle/2011/05/14/exchange-web-services-suds-and-python/> It has the same problem.
Back Trace
================
Traceback (most recent call last):
File "etrace.py", line 30, in <module>
client = suds.client.Client(url, transport=transport,
username='*******', password='*****')
File
"/usr/local/lib/python2.7/site-packages/suds-0.4-py2.7.egg/suds/client.py", line 112, in __init__
self.wsdl = reader.open(url)
File
"/usr/local/lib/python2.7/site-packages/suds-0.4-py2.7.egg/suds/reader.py", line 152, in open
d = self.fn(url, self.options)
File
"/usr/local/lib/python2.7/site-packages/suds-0.4-py2.7.egg/suds/wsdl.py", line 136, in __init__
d = reader.open(url)
File
"/usr/local/lib/python2.7/site-packages/suds-0.4-py2.7.egg/suds/reader.py", line 79, in open
d = self.download(url)
File
"/usr/local/lib/python2.7/site-packages/suds-0.4-py2.7.egg/suds/reader.py", line 95, in download
fp = self.options.transport.open(Request(url))
File
"/usr/local/lib/python2.7/site-packages/suds-0.4-py2.7.egg/suds/transport/http.py", line 173, in open
return HttpTransport.open(self, request)
File
"/usr/local/lib/python2.7/site-packages/suds-0.4-py2.7.egg/suds/transport/http.py", line 64, in open
raise TransportError(str(e), e.code, e.fp)
suds.transport.TransportError: HTTP Error 401: Unauthorized
I'm having a bear of a time getting HTTP Basic Authentication to work
for a SOAP request via suds. Also using an HTTP proxy server.
In WireShark I just see a request -
GET http://...../services/services/JobService-0.0.1?wsdl HTTP/1.1
Accept-Encoding: identity
Host: .......
Connection: close
User-Agent: Python-urllib/2.7
This doesn't contain any authentication credentials so the response is
HTTP/401, and the client doesn't retry with credentials. The response
does come from the remote as I can see there is a WWW-Authenticate
header and it is from an Apache Tomcat server - so it makes it through
the proxy server.
Code
================
url = 'http://....../services/services/JobService-0.0.1?wsdl'
proxy = urllib2.ProxyHandler({'http': 'http://.....:3128'})
transport = suds.transport.http.HttpAuthenticated()
transport.urlopener = urllib2.build_opener(proxy)
client = suds.client.Client(url, transport=transport,
username='******', password='********')
.....
I've tried the above as well as the method described at
<http://blogs.oucs.ox.ac.uk/inapickle/2011/05/14/exchange-web-services-suds-and-python/> It has the same problem.
Back Trace
================
Traceback (most recent call last):
File "etrace.py", line 30, in <module>
client = suds.client.Client(url, transport=transport,
username='*******', password='*****')
File
"/usr/local/lib/python2.7/site-packages/suds-0.4-py2.7.egg/suds/client.py", line 112, in __init__
self.wsdl = reader.open(url)
File
"/usr/local/lib/python2.7/site-packages/suds-0.4-py2.7.egg/suds/reader.py", line 152, in open
d = self.fn(url, self.options)
File
"/usr/local/lib/python2.7/site-packages/suds-0.4-py2.7.egg/suds/wsdl.py", line 136, in __init__
d = reader.open(url)
File
"/usr/local/lib/python2.7/site-packages/suds-0.4-py2.7.egg/suds/reader.py", line 79, in open
d = self.download(url)
File
"/usr/local/lib/python2.7/site-packages/suds-0.4-py2.7.egg/suds/reader.py", line 95, in download
fp = self.options.transport.open(Request(url))
File
"/usr/local/lib/python2.7/site-packages/suds-0.4-py2.7.egg/suds/transport/http.py", line 173, in open
return HttpTransport.open(self, request)
File
"/usr/local/lib/python2.7/site-packages/suds-0.4-py2.7.egg/suds/transport/http.py", line 64, in open
raise TransportError(str(e), e.code, e.fp)
suds.transport.TransportError: HTTP Error 401: Unauthorized