Ich versuche, die Bitbucket API für mein Konto zu schlagen, und ein erfolgreicher Versuch wie folgt aussieht:curl vs Python "Anfragen", wenn APIs schlagen
curl --user screename:mypassword
https://api.bitbucket.org/1.0/user/repositories
in der Kommandozeile. In Python, ich versuche:
import requests
s = requests.session()
url = 'https://api.bitbucket.org/1.0/user/repositories'
dann
r = requests.post(url, data={'username': myscreename, 'password':mypassword})
und
r = requests.post(url, data="myscreename:mypassword")
und
r = requests.post(url, data={"user": "myscreename:mypassword"})
alle 405 Fehler. Die API ist https://confluence.atlassian.com/display/BITBUCKET/Use+the+Bitbucket+REST+APIs
Ich frage mich:
Was bin ich in der Anfragen-Version falsch zu machen, sie alle ähnlich aussehen wie meine curl Versuch
Was ist der Unterschied mit curl zwischen Anforderung und Python Anfragen Modul? Welches generelle Muster kann ich beim Lesen einer API mit einem Curl-Beispiel erkennen und dann in Python schreiben?
Danke
ANTWORT:
es die richtigen Header erforderlich
https://answers.atlassian.com/questions/18451025/answers/18451117?flashId=-982194107
UPDATE:
# ===============
# get user
# ===============
import requests
import json
# [BITBUCKET-BASE-URL], i.e.: https://bitbucket.org/
url = '[BITBUCKET-BASE-URL]/api/1.0/user/'
headers = {'Content-Type': 'application/json'}
# get user
# [USERNAME], i.e.: myuser
# [PASSWORD], i.e.: itspassword
r = requests.get(url, auth=('[USERNAME]', '[PASSWORD]'), headers=headers)
print(r.status_code)
print(r.text)
#print(r.content)
'--user' in curl verwendet HTTP Auth Kopfzeilen. Ihre 'data = {" username "...' Lösung enthält sie als Post-Daten. Die beiden sind nicht dasselbe und es ist unwahrscheinlich, dass Bitbucket nach den Post-Daten sucht. –