我在使用百度统计 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 ![]() "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 兄弟说的空格问题[扶额] 非常抱歉打扰大家了 |