L'authentification de base ne fonctionne pas avec les Demandes de la bibliothèque
Je suis en train d'utiliser l'authentification basique en python
auth = requests.post('http://' + hostname, auth=HTTPBasicAuth(user, password))
request = requests.get('http://' + hostname + '/rest/applications')
Formulaire de réponse auth variable:
<<class 'requests.cookies.RequestsCookieJar'>[<Cookie JSESSIONID=cb10906c6219c07f887dff5312fb for appdynamics/controller>]>
200
CaseInsensitiveDict({'content-encoding': 'gzip', 'x-powered-by': 'JSP/2.2', 'transfer-encoding': 'chunked', 'set-cookie': 'JSESSIONID=cb10906c6219c07f887dff5312fb; Path=/controller; HttpOnly', 'expires': 'Wed, 05 Nov 2014 19:03:37 GMT', 'server': 'nginx/1.1.19', 'connection': 'keep-alive', 'pragma': 'no-cache', 'cache-control': 'max-age=78000', 'date': 'Tue, 04 Nov 2014 21:23:37 GMT', 'content-type': 'text/html;charset=ISO-8859-1'})
Mais quand j'essaie d'obtenir des données à partir de différents endroits, - je suis d'erreur 401
<<class 'requests.cookies.RequestsCookieJar'>[]>
401
CaseInsensitiveDict({'content-length': '1073', 'x-powered-by': 'Servlet/3.0 JSP/2.2 (GlassFish Server Open Source Edition 3.1.2.2 Java/Oracle Corporation/1.7)', 'expires': 'Thu, 01 Jan 1970 00:00:00 UTC', 'server': 'nginx/1.1.19', 'connection': 'keep-alive', 'pragma': 'No-cache', 'cache-control': 'no-cache', 'date': 'Tue, 04 Nov 2014 21:23:37 GMT', 'content-type': 'text/html', 'www-authenticate': 'Basic realm="controller_realm"'})
Comme je le comprends - dans la deuxième demande ne sont pas substitués paramètres de session.
Vous devez inclure le code pour faire la deuxième demande
Je ne sais pas comment le faire, et je ne peux pas trouver un manuel approprié
Je veux dire, vous devez inclure de code pour la deuxième demande. En deuxième demande faites-vous référence à " accéder à la demande?
Je ne sais pas comment le faire, et je ne peux pas trouver un manuel approprié
Je veux dire, vous devez inclure de code pour la deuxième demande. En deuxième demande faites-vous référence à " accéder à la demande?
OriginalL'auteur oleksii | 2014-11-04
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser un objet de session et d'envoyer l'authentification chaque demande. La session permettra également de suivre de cookies pour vous:
définir "ne pas travailler". Et lorsque vous utilisez la POSTE (sans paramètres, je note), le serveur se retourner n'importe quel jeton ou tout ce que vous devez utiliser pour le RESTE de l'API ici? En d'autres termes, quel est le la documentation de l'API de l'état que vous devez faire?
L'officiel docs besoin de mise à jour
Après avoir lu votre commentaire 10 fimes. J'ai toujours pas à comprendre. Je peux utiliser basicAuth dans le Postier. Facteur digérer nom d'utilisateur/mot de passe dans l'en-tête
Authorization: Basic <....>
. Mais je ne pouvais pas être en mesure de se connecter pourquoi j'ai besoin de session ici, mais ça fonctionne! Quel est le problème avec @oleksii tentative?L'en-tête doit être inclus dans la chaque demande que vous envoyez au serveur; en général le seul moyen que le serveur peut vous authentifier basé sur l'en-tête, pas d'autre info. Le facile de façon à ajouter l'en-tête de chaque demande est d'utiliser une session. Vous n'avez pas , mais alors vous devez inclure l'en-tête manuellement à chaque demande.
OriginalL'auteur Martijn Pieters
La exemple semble un peu différent de votre code.
La documentation indique également que l'utilisation d'un
HTTPBasicAuth
objet est facultatif; en passant dans un nom d'utilisateur et le mot de passe tuple n' exactement la même chose parce que c'est le cas de base.OriginalL'auteur Wyrmwood
Remarque: parfois, on peut obtenir l'erreur SSL certificat vérifier échoué, à éviter, on peut utiliser vérifiez=False
OriginalL'auteur Kuppuram