scholarOfSin
V2EX  ›  问与答

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

  •  
  •   scholarOfSin · Mar 2, 2019 · 2205 views
    This topic created in 2638 days ago, the information mentioned may be changed or developed.

    分别使用 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 replies    2019-03-02 20:21:32 +08:00
    niknik
        1
    niknik  
       Mar 2, 2019
    scholarOfSin
        2
    scholarOfSin  
    OP
       Mar 2, 2019
    @niknik 不好意思,没看出这篇文章和我的问题有什么关系
    rawidn
        3
    rawidn  
       Mar 2, 2019 via iPhone
    尝试手动指定下 Content-Type
    lxy42
        4
    lxy42  
       Mar 2, 2019 via Android
    可能是 data 的编码不一样,一般是 json 或者 form 格式
    lxy42
        5
    lxy42  
       Mar 2, 2019 via Android
    requests 默认是 form 格式,使用 json 参数替代 data 参数可以使用 json 格式。aiohttp 不太熟,你查下文档看下是什么编码。
    scholarOfSin
        6
    scholarOfSin  
    OP
       Mar 2, 2019
    找了很久的文档最后还是没有解决,干脆换成 requests-futures,现在心情十分舒畅
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5501 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 06:44 · PVG 14:44 · LAX 23:44 · JFK 02:44
    ♥ Do have faith in what you're doing.