Re: Can't get around HTTP/401 response using SUDS [SOLVED]

Discussion in 'Python' started by Adam Tauno Williams, Mar 10, 2012.

  1. On Fri, 2012-03-09 at 00:03 +0100, Rafael Durán Castañeda wrote:
    > El 08/03/12 16:44, Adam Tauno Williams escribió:
    > > 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='********')
    > > ....
    > > "/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

    > When I've got issues like yours, I usually try using a console client
    > (telnet/curl/wget,...) adding all needed headers/data manually so I'm
    > totally sure the request is OK, if everything goes Ok you know your
    > python code need to be reviewed but when you are under proxies you can
    > find a lot of not python related issues (bad gateways, using proxy when
    > it shouldn't or vice-versa, requests changed by proxy,....).


    Nope, proxy works perfectly [for hundreds of clients].

    The problem turned out to be that SUDS uses the specified transport for
    SOAP requests/operations. When requesting the WSDL in order to built
    the client interface it doesn't use the transport.

    So either download the service description to a local file and use that
    or just use urllib2 to retrieve the WSDL to a buffer (outside of SUDS).
    Once the client is created the requests work with authentication and via
    the proxy with no issues.

    > wireshark can be very useful but in situations like this I usually
    > prefer tcpflow output, I think the request/response flow showed is
    > really useful, but that's a personal preference.


    Wireshark does the same thing; you just select a packet in the stream
    and then select "follow conversation".

    --
    System & Network Administrator [ LPI & NCLA ]
    <http://www.whitemiceconsulting.com>
    OpenGroupware Developer <http://www.opengroupware.us>
    Adam Tauno Williams
    Adam Tauno Williams, Mar 10, 2012
    #1
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. mike
    Replies:
    5
    Views:
    944
    Keith M. Corbett
    Sep 21, 2004
  2. Michael Bacarella
    Replies:
    26
    Views:
    1,307
    harri
    Nov 20, 2007
  3. Eric von Horst

    Help with suds: HTTP Error 401

    Eric von Horst, Jun 11, 2010, in forum: Python
    Replies:
    3
    Views:
    1,992
    plainsane
    Jun 21, 2010
  4. Adam Tauno Williams

    Can't get around HTTP/401 response using SUDS

    Adam Tauno Williams, Mar 8, 2012, in forum: Python
    Replies:
    0
    Views:
    321
    Adam Tauno Williams
    Mar 8, 2012
  5. iMath
    Replies:
    3
    Views:
    129
    iMath
    Jan 7, 2013
Loading...

Share This Page