V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
Ginson
V2EX  ›  Python

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

  •  
  •   Ginson · Jan 21, 2019 · 2290 views
    This topic created in 2655 days ago, the information mentioned may be changed or developed.

    我在使用百度统计 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
    

    通过代码请求返回的结果如下图

    image

    虽然传入的日期是 20190119 ,但返回的数据日期是默认的 20190121 (当天) ,等于日期参数没生效

    API 工具请求

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

    Ho
        1
    Ho  
       Jan 21, 2019
    两个的请求参数肯定有不一样的地方 注意请求头
    用 charles 模拟
    samcode
        2
    samcode  
       Jan 21, 2019   ❤️ 1
    "start_date ": start, "end_date": end, 多了个空格
    xiaoxinxiaobai
        3
    xiaoxinxiaobai  
       Jan 21, 2019 via Android
    请求参数不一样,具体可以看两个请求的 header,目测 content-type 不一样,一个 form,一个 json
    Ginson
        4
    Ginson  
    OP
       Jan 21, 2019
    @samcode
    感谢…确实没注意到,一直在看是不是参数名拼写错了、格式是不是不对,万万没想到

    @Ho
    @xiaoxinxiaobai

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

    非常抱歉打扰大家了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   960 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 19:53 · PVG 03:53 · LAX 12:53 · JFK 15:53
    ♥ Do have faith in what you're doing.