我在将工作cURL调用转换为内部API到python请求调用时遇到问题。
这是工作的cURL电话:
curl -k -H 'Authorization:Token token=12345' 'https://server.domain.com/api?query=query'
然后我尝试将该调用转换为有效的python请求脚本:
#!/usr/bin/env python
import requests
url = 'https://server.domain.com/api?query=query'
headers = {'Authorization': 'Token token=12345'}
r = requests.get(url, headers=headers, verify=False)
print r
我收到HTTP 401或500错误,具体取决于我如何更改标头变量。我不明白的是我的python请求与cURL请求有什么不同。它们都是从同一个服务器运行,作为同一个用户运行。
任何帮助将不胜感激
答案 0 :(得分:1)
很难说不知道你的api,但你可能有一个重定向,卷曲是为了表示请求不是(或者至少不会在重定向上发送标题)。
尝试使用会话对象来确保所有请求(和重定向)都有您的标头。
#!/usr/bin/env python
import requests
url = 'https://server.domain.com/api?query=query'
headers = {'Authorization': 'Token token=12345'}
#start a session
s = requests.Session()
#add headers to session
s.headers.update(headers)
#use session to perform a GET request.
r = s.get(url)
print r
答案 1 :(得分:0)
我弄清楚了,事实证明我必须指定“accept”标头值,工作脚本如下所示:
#!/usr/bin/env python
import requests
url = 'https://server.domain.com/api?query=query'
headers = {'Accept': 'application/app.app.v2+json', 'Authorization': 'Token token=12345'}
r = requests.get(url, headers=headers, verify=False)
print r.json()