L'astuce consiste à créer un gestionnaire de mots de passe, puis d'en parler à urllib. Habituellement, vous ne vous soucierez pas du domaine de l'authentification, seulement la partie hôte/URL. Par exemple, les éléments suivants:
password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
top_level_url = "http://example.com/"
password_mgr.add_password(None, top_level_url, 'user', 'password')
handler = urllib2.HTTPBasicAuthHandler(password_mgr)
opener = urllib2.build_opener(urllib2.HTTPHandler, handler)
request = urllib2.Request(url)
va définir le nom d'utilisateur et mot de passe pour chaque URL commençant par top_level_url
. Les autres options sont de spécifier un nom d'hôte ou une URL plus complète ici.
Un bon document décrivant ceci et plus est à http://www.voidspace.org.uk/python/articles/urllib2.shtml#id6.
Comment est-ce plus simple que l'exemple initial? – ibz
ibz: Je n'ai jamais prétendu que c'était plus simple, mais dans mon exemple de code, vous n'avez pas à manipuler manuellement les chaînes de nom d'utilisateur et de mot de passe. De plus, vous en obtenez toutes sortes d'avantages, comme le code qui détermine si vous voulez réellement envoyer les informations d'authentification au serveur, en fonction de l'URL. Vous pouvez ou ne pouvez pas avoir besoin de tout cela; Choisissez une solution qui fonctionne pour vous. – Ivo
J'ai trouvé le truc de passman ne fonctionnait pas. L'ajout de l'en-tête utilisateur/passe base64 selon cette réponse http://stackoverflow.com/a/18592800/623159 a bien fonctionné. Accéder à l'URL jenkins comme http: ///job//lastCompletedBuild/testR eport/api/python –
gaoithe