Python使用三个参数请求库HTTPBasicAuth

Wil*_*rto 9 python http

我正在尝试使用Instapaper的简单开发人员api使用python和请求库为我的书签添加URL.要验证用户名和密码,一切正常.

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

但是在尝试使用api添加书签时:

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

我收到错误:

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)
Run Code Online (Sandbox Code Playgroud)

我认为这是因为HTTPBasicAuth不能采取第三个参数,有没有人知道这样做的方法?

Mar*_*ers 8

HTTPBasicAuth()只有永远需要用户名和密码参数.没有第三个参数,全站.

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

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

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

无论是requests.get()requests.post()会做.