找出使用python-requests

时间:2017-09-11 15:49:33

标签: python-3.x curl python-requests

当使用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。怎么可能这样做。

2 个答案:

答案 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会给出答案。

我的请求的问题还在于fromTimetoTime的传递方式。