2013-02-10 14 views
8

Próbuję użyć adresu Instapaper's simple developer api, aby dodać adres URL do moich zakładek za pomocą pythona i biblioteki żądań. Aby uwierzytelnić nazwę użytkownika i hasło, wszystko działa dobrze.Python żąda biblioteki HTTPBasicAuth z trzema parametrami

import requests 
from requests.auth import HTTPBasicAuth 
requests.get('https://www.instapaper.com/api/authenticate', auth=HTTPBasicAuth('username', 'password')) 

Ale gdy próbuje użyć API dodać zakładkę:

requests.get('https://www.instapaper.com/api/add', auth=HTTPBasicAuth('username', 'password','websiteUrl')) 

otrzymuję błąd:

File "instantbookmark.py", line 3, in <module> 
    getA = requests.get('https://www.instapaper.com/api/add',  auth=HTTPBasicAuth('username', 'password','websiteUrl')) 
TypeError: __init__() takes exactly 3 arguments (4 given) 

Myślę, że to dlatego, że nie może wziąć HTTPBasicAuth trzeciego argumentu , czy ktoś wie, jak to zrobić?

+0

To jest pełny błąd śledzenia – Wilberto

+0

Tak, sprawdziłem źródło żądań i dokumentację API, zobacz moją odpowiedź poniżej. –

Odpowiedz

7

HTTPBasicAuth() tylko kiedykolwiek pobiera argumenty użytkownika i hasło. Nie ma trzeciego argumentu, kropka.

Autentyfikacja HTTP Basic dodaje dodatkowy nagłówek do żądania; informacje te są przechowywane oddzielnie od parametrów GET lub POST. Podczas korzystania z tej formy uwierzytelniania nie trzeba przekazywać żadnych parametrów username i do metod API.

Aby dodać zakładkę, przechodzą w parametrze url jako parametr GET lub POST danych:

requests.post('https://www.instapaper.com/api/add', data={'url': 'websiteUrl'}, auth=HTTPBasicAuth('username', 'password')) 

Albo requests.get() lub requests.post() zrobi.

Powiązane problemy