代码和 API 调试工具返回结果不同

2019-01-21 13:27:29 +08:00
 Ginson

我在使用百度统计 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 (当天) ,等于日期参数没生效

API 工具请求

同样参数,返回结果则正常

1451 次点击
所在节点    Python
4 条回复
Ho
2019-01-21 14:12:32 +08:00
两个的请求参数肯定有不一样的地方 注意请求头
用 charles 模拟
samcode
2019-01-21 14:16:33 +08:00
"start_date ": start, "end_date": end, 多了个空格
xiaoxinxiaobai
2019-01-21 14:22:18 +08:00
请求参数不一样,具体可以看两个请求的 header,目测 content-type 不一样,一个 form,一个 json
Ginson
2019-01-21 14:47:35 +08:00
@samcode
感谢…确实没注意到,一直在看是不是参数名拼写错了、格式是不是不对,万万没想到

@Ho
@xiaoxinxiaobai

感谢两位,我尝试单独构造过 header 再请求,结果一样的。
实际原因是 2L samcode 兄弟说的空格问题[扶额]

非常抱歉打扰大家了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/529088

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX