Python请求给出响应401

时间:2016-11-13 09:18:20

标签: python api curl python-requests

我从API下载数据但收到错误401: 我理解错误401,但不知道我的代码有什么问题。

import json
import requests
path='C:/Users/sharm_000/Desktop/Price Comparison/'

cat=str('https://affiliate-api.flipkart.net/affiliate/api/swapnilsh5.json')
r = requests.get(cat, auth=('swapnilsh5', '7018e1141bcd4ace9c3fe12277924035'))
print (r)

上面的代码返回201响应很好,但是当我进入下一级数据下载时,挑战就来了

link='https://affiliate-api.flipkart.net/affiliate/1.0/feeds/swapnilsh5/category/j9e-abm-c54.json?expiresAt=1479062969473&sig=1ef27c056140e0ff7cac143670584e9d&inStock=1'

r = requests.get(str(link), auth=('swapnilsh5', '7018e1141bcd4ace9c3fe12277924035'))

print(r)

这返回401错误,这个我无法弄清楚,当我使用curl运行上面的链接时

curl -H "Fk-Affiliate-Id:swapnilsh5" -H "Fk-Affiliate-Token:7018e1141bcd4ace9c3fe12277924035" "https://affiliate-api.flipkart.net/affiliate/1.0/feeds/swapnilsh5/category/j9e-abm-c54.json?expiresAt=1479062969473&sig=1ef27c056140e0ff7cac143670584e9d&inStock=1" -o "C:\Users\sharm_000\Desktop\Price Comparison\a1c.json"

curl命令工作正常。

请告诉我出错的地方以及在python中执行相同任务的其他方法。

先谢谢。

1 个答案:

答案 0 :(得分:0)

您要连接的api端点使用非标准标头。因此,auth不适合您。您必须将它们作为自定义标题传递,就像使用curl时一样。

requests.get(str(link), 
    headers = { "Fk-Affiliate-Id" : 'swapnilsh5',
                "Fk-Affiliate-Token": '7018e1141bcd4ace9c3fe12277924035'})