Python client SOAP, WSDL appel avec de la mousse donne de Transport d'Erreur 401 non autorisé pour l'authentification HTTP de base

Fond

Je suis en train de construire un client SOAP avec python 2.7.3 et à l'aide de la mousse 0.4.1 bibliothèque fournie par Canonical. Le serveur utilise l'authentification de base sur le protocole HTTPS.

Problème

On ne peut pas passer l'authentification sur le serveur, même pour aller à l'WSDL. J'obtiens l'erreur suivante:

de la mousse.de transport.TransportError: Erreur HTTP 401: non autorisé

Tentatives de résolution et le code

J'ai essayé les deux méthodes d'authentification décrites dans le la mousse de la documentation, mais encore obtenir l'erreur ci-dessus à la client = Client(url, ...) ligne. J'ai confirmé les pouvoirs et la capacité de se connecter à un navigateur web, qui fonctionne très bien.

Après la déclaration d' wsdl_url, username et password, j'ai essayé:

client = Client(url=wsdl_url, username=username, password=password)

# as well as:

t = HttpAuthenticated(username=username, password=password)
client = Client(url=wsdl_url, transport=t)

# and even:

t = HttpAuthenticated(username=username, password=password)
t.handler = urllib2.HTTPBasicAuthHandler(t.pm)
t.urlopener = urllib2.build_opener(t.handler)
client = Client(url=wsdl_url, transport=t)

Ce dernier semble, au moins, d'obtenir une réponse à partir de l'URL du WSDL dans une autre question à propos de l'authentification HTTP avec de la mousse.

Autres notes

Cette question est distincte de ce question similaire parce que je suis en utilisant:

from suds.transport.https import HttpAuthenticated
# not:
# from suds.transport.http import HttpAuthenticated

et de la traçabilité en amont, la client = Client(url, ...) appel clairement hits suds.transport.https.py:

File "/usr/lib/python2.7/dist-packages/suds/client.py", line 112, in __init__ self.wsdl = reader.open(url)
File "/usr/lib/python2.7/dist-packages/suds/reader.py", line 152, in open d = self.fn(url, self.options)
File "/usr/lib/python2.7/dist-packages/suds/wsdl.py", line 136, in __init__ d = reader.open(url)
File "/usr/lib/python2.7/dist-packages/suds/reader.py", line 79, in open d = self.download(url)
File "/usr/lib/python2.7/dist-packages/suds/reader.py", line 95, in download fp = self.options.transport.open(Request(url))
File "/usr/lib/python2.7/dist-packages/suds/transport/https.py", line 60, in open return  HttpTransport.open(self, request)
File "/usr/lib/python2.7/dist-packages/suds/transport/http.py", line 64, in open raise TransportError(str(e), e.code, e.fp)

Ce qui me manque?

+1 pour le bien expliqué question. pourrions-nous avoir un regard sur le traceback? aussi, désolé si cette morale, mais êtes-vous sûr d'utiliser le bon nom d'utilisateur & mot de passe pour le service
J'ai ajouté plus de la traçabilité en amont. La ligne précédente varient selon la version de la client = Client(url=wsdl_url ...) que j'utilise. J'étais convaincu que cela a dû être une erreur avec le nom d'utilisateur et le mot de passe, aussi, mais j'ai copier-collé directement depuis le fichier de configuration dans le navigateur (plusieurs fois!) à faire absolument sûr.

OriginalL'auteur Kenny Linsky | 2012-07-31