Can't get around HTTP/401 response using SUDS

Adam Tauno Williams awilliam at whitemice.org
Thu Mar 8 10:44:15 EST 2012


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

-- 
System & Network Administrator [ LPI & NCLA ]
<http://www.whitemiceconsulting.com>
OpenGroupware Developer <http://www.opengroupware.us>
Adam Tauno Williams





More information about the Python-list mailing list