我在使用百度统计 API 的过程中发现同样请求参数的情况下,代码返回的结果和 API 调试工具返回的结果不同。
通过 API 工具(我用的是 Insomia )请求时能返回正常结果,但用代码请求时,日期参数不能正常生效。
日期参数格式、类型都正确,不知道问题出在哪里,求解
def getresult(start, end, method, metrics, **kw):
base_url = "https://api.baidu.com/json/tongji/v1/ReportService/getData"
body = {"header": {"account_type": 1, "password": "", "token": "", "username": ""},
"body": {"siteId": siteId, "method": method, "start_date ": start, "end_date": end, "max_results": 0, "metrics": metrics, "gran": "day"}}
for key in kw:
body['body'][key] = kw[key]
data = json.dumps(body)
res = requests.post(base_url, data)
res = json.loads(res.text)
return res
通过代码请求返回的结果如下图
虽然传入的日期是 20190119 ,但返回的数据日期是默认的 20190121 (当天) ,等于日期参数没生效
同样参数,返回结果则正常
1
Ho 2019-01-21 14:12:32 +08:00
两个的请求参数肯定有不一样的地方 注意请求头
用 charles 模拟 |
2
samcode 2019-01-21 14:16:33 +08:00 1
"start_date ": start, "end_date": end, 多了个空格
|
3
xiaoxinxiaobai 2019-01-21 14:22:18 +08:00 via Android
请求参数不一样,具体可以看两个请求的 header,目测 content-type 不一样,一个 form,一个 json
|
4
Ginson OP @samcode
感谢…确实没注意到,一直在看是不是参数名拼写错了、格式是不是不对,万万没想到 @Ho @xiaoxinxiaobai 感谢两位,我尝试单独构造过 header 再请求,结果一样的。 实际原因是 2L samcode 兄弟说的空格问题[扶额] 非常抱歉打扰大家了 |