V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
scholarOfSin
V2EX  ›  问与答

Python aiohttp 调用 Face++ API 始终报错?

  •  
  •   scholarOfSin · 2019-03-02 11:09:50 +08:00 · 1598 次点击
    这是一个创建于 2100 天前的主题,其中的信息可能已经有所发展或是发生改变。

    分别使用 aiohttp 和 requests 调用 Face++ API,使用相同的参数却返回不同的结果。

    使用 aiohttp:

    async with session.post(<api_url>, data=payload) as resp:
    	<something>
    

    使用 requests:

    r = requests.post(<api_url>, data=payload)
    

    两者的 payload 完全相同,形如{'api_key': <api_key>, 'api_secret': <api_secret>, 'image_base64': <image_base64>}。然而使用 requests 调用完全正常;使用 aiohttp 却返回 400,错误信息为 MISSING_ARGUMENTS: api_key。

    aiohttp 是做了什么或者少做了什么事情吗,为什么会有这样的差异呢,应该如何解决这个问题?提前感谢 V 友们的帮助。

    6 条回复    2019-03-02 20:21:32 +08:00
    niknik
        1
    niknik  
       2019-03-02 11:31:37 +08:00
    scholarOfSin
        2
    scholarOfSin  
    OP
       2019-03-02 11:45:29 +08:00
    @niknik 不好意思,没看出这篇文章和我的问题有什么关系
    rawidn
        3
    rawidn  
       2019-03-02 11:57:57 +08:00 via iPhone
    尝试手动指定下 Content-Type
    lxy42
        4
    lxy42  
       2019-03-02 12:02:58 +08:00 via Android
    可能是 data 的编码不一样,一般是 json 或者 form 格式
    lxy42
        5
    lxy42  
       2019-03-02 12:18:05 +08:00 via Android
    requests 默认是 form 格式,使用 json 参数替代 data 参数可以使用 json 格式。aiohttp 不太熟,你查下文档看下是什么编码。
    scholarOfSin
        6
    scholarOfSin  
    OP
       2019-03-02 20:21:32 +08:00
    找了很久的文档最后还是没有解决,干脆换成 requests-futures,现在心情十分舒畅
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2660 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 10:19 · PVG 18:19 · LAX 02:19 · JFK 05:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.