próbuję trafić API Bitbucket na moim koncie i udana próba wygląda następująco:curl vs python „żądań” po uderzeniu API
curl --user screename:mypassword
https://api.bitbucket.org/1.0/user/repositories
w wierszu poleceń. W Pythonie, staram:
import requests
s = requests.session()
url = 'https://api.bitbucket.org/1.0/user/repositories'
następnie
r = requests.post(url, data={'username': myscreename, 'password':mypassword})
i
r = requests.post(url, data="myscreename:mypassword")
i
r = requests.post(url, data={"user": "myscreename:mypassword"})
wszystko dostać 405 błędu. API jest https://confluence.atlassian.com/display/BITBUCKET/Use+the+Bitbucket+REST+APIs
zastanawiam:
Co robię źle w wersji wnioski, wszystkie wyglądają podobnie do mojego curl próbie
Jaka jest różnica między wnioskiem z dyni i moduł zapytań Pythona? Jaki ogólny wzór mogę rozpoznać, czytając API z przykręconym przykładem, a następnie zapisując go w pythonie?
Dziękuję
odpowiedź:
to wymagane odpowiednie nagłówki
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' w zwinięcie używa uwierzytelniania HTTP nagłówki. Twoje rozwiązanie 'data = {" username "...' uwzględnia je jako dane post. Te dwie rzeczy to nie to samo i jest mało prawdopodobne, że Bitbucket szuka tych w danych postów. –