2013-02-10 13 views
8

私はInstapaper's simple developer apiを使って、pythonとリクエストライブラリを使用してブックマークにURLを追加しようとしています。ユーザー名とパスワードを認証するには、すべてうまくいきます。Pythonリクエストライブラリ3つのパラメータを持つHTTPBasicAuth

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

しかし、ブックマークを追加するためのAPIを使用しようとしている:

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

私はエラーを取得する:

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) 

私はHTTPBasicAuthは三番目の引数を取ることができないためであると思います誰でもこれを行う方法を知っていますか?

+0

それは完全なトレースバックエラーです – Wilberto

+0

ええ、私は要求のソースとAPIのドキュメントをチェックしました。以下の私の答えを見てください。 –

答えて

7

HTTPBasicAuth()は、ユーザー名とパスワードの引数をとります。第3引数、フルストップはありません。

HTTP基本認証では、要求に余分なヘッダーが追加されます。この情報はGETまたはPOSTのパラメータとは別に保持されます。この形式の認証を使用する場合は、usernamepasswordのいずれのパラメータもAPIメソッドに渡す必要はありません。

、ブックマークを追加POSTとしてurlパラメータを渡したり、データのパラメータを取得するには:

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

requests.get()またはrequests.post()のどちらかを行います。

関連する問題