15

我正在尝试使用Instapaper 的简单开发人员 api使用 python 和请求库向我的书签添加一个 url。验证用户名和密码一切正常。

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 不能接​​受第三个参数,有人知道这样做的方法吗?

4

1 回答 1

17

HTTPBasicAuth()接受用户名和密码参数。没有第三个论点,句号。

HTTP Basic Authentication 为请求添加了额外的标头;此信息与 GET 或 POST 参数分开保存。当您使用这种形式的身份验证时,您也不需要向 API 方法传递任何usernamepassword参数。

要添加书签,请将url参数作为 POST 或 GET 数据参数传入:

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

要么做,requests.get()要么requests.post()做。

于 2013-02-10T12:41:08.790 回答