当使用curl调用API时,它会返回响应,而当使用python中的requests
库调用相同的API时,会产生错误:
卷曲电话:
curl -X GET --header "Accept: application/json" --header "Authorization: oauth_code" "https://api.getgo.com/G2W/rest/organizers/5913931473742004748/historicalWebinars?fromTime=2017-07-13T10%3A00%3A00Z&toTime=2017-09-10T10%3A00%3A00Z"
请求代码:
import requests
import datetime
date_11_days_back = (datetime.datetime.now() - datetime.timedelta(days=11)).isoformat()
date_now = datetime.datetime.now().isoformat()
webinars_url = "https://api.getgo.com/G2W/rest/organizers/5913931473742004748/historicalWebinars"
params = {
'fromTime': date_11_days_back,
'toTime': date_now
}
headers = {
'Authorization': 'oauth_token'
}
last_week_webinars = requests.get(webinars_url, headers=headers, params=params)
此调用导致错误b'{"errorCode":"InvalidRequest","description":"Your request could not be processed because one or more of the request parameters are an invalid type.","incident":"5308828452798993933"}'
我知道,这是API的特定内容。
按如下方式传递headers
也会产生错误:
headers = {
'Authorization': "TOK:{}".format(goto_webinar_access_token)
}
错误:b'{"int_err_code":"InvalidToken","msg":"Invalid token passed"}'
我想看看作为http调用的一部分发送了token
。怎么可能这样做。
答案 0 :(得分:0)
如何使用http://httpbin.org/get
?您可以使用它查看访问令牌。示例脚本和结果如下。
import requests
import datetime
date_11_days_back = (datetime.datetime.now() - datetime.timedelta(days=11)).isoformat()
date_now = datetime.datetime.now().isoformat()
webinars_url = "http://httpbin.org/get"
params = {
'fromTime': date_11_days_back,
'toTime': date_now
}
headers = {
'Authorization': "TOK:{}".format("### access token ###")
}
last_week_webinars = requests.get(webinars_url, headers=headers, params=params)
print(last_week_webinars.text)
{
"args": {
"fromTime": "2017-01-01T00:00:00.000000",
"toTime": "2017-01-02T00:00:00.000000"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Authorization": "TOK:### access token ###",
"Connection": "close",
"Host": "httpbin.org",
"User-Agent": "python-requests"
},
"origin": "#####",
"url": "http://httpbin.org/get?toTime=2017-01-02T00%3a00%3a00%2e000000&fromTime=2017-01-01T00%3a00%3a00%2e000000"
}
如果我误解了你的问题,我很抱歉。
答案 1 :(得分:0)
我想看到的是作为标题的一部分传递的TOKEN,作为请求触发的HTTP请求的一部分传递。
以下是您可以查看它的方法。
response.request.headers
:这会显示所有传递的标题及其对应的值。
此外,要查找响应(有问题的last_week_webinars)标题,response.headers
会给出答案。
我的请求的问题还在于fromTime
和toTime
的传递方式。