我正在尝试使用Instapaper's simple developer api使用python和请求库为我的书签添加网址。要验证用户名和密码,一切正常。
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 :(得分:7)
HTTPBasicAuth()
只有永远获取用户名和密码参数。没有第三个参数,全停。
HTTP基本身份验证为请求添加了额外的标头;此信息与GET或POST参数分开。使用此形式的身份验证时,您无需将任何username
和password
参数传递给API方法。
要添加书签,请将url
参数作为POST或GET数据参数传递:
requests.post('https://www.instapaper.com/api/add', data={'url': 'websiteUrl'}, auth=HTTPBasicAuth('username', 'password'))
requests.get()
或requests.post()
都可以。