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

2019-03-02 11:09:50 +08:00
 scholarOfSin

分别使用 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 友们的帮助。

1466 次点击
所在节点    问与答
6 条回复
niknik
2019-03-02 11:31:37 +08:00
scholarOfSin
2019-03-02 11:45:29 +08:00
@niknik 不好意思,没看出这篇文章和我的问题有什么关系
rawidn
2019-03-02 11:57:57 +08:00
尝试手动指定下 Content-Type
lxy42
2019-03-02 12:02:58 +08:00
可能是 data 的编码不一样,一般是 json 或者 form 格式
lxy42
2019-03-02 12:18:05 +08:00
requests 默认是 form 格式,使用 json 参数替代 data 参数可以使用 json 格式。aiohttp 不太熟,你查下文档看下是什么编码。
scholarOfSin
2019-03-02 20:21:32 +08:00
找了很久的文档最后还是没有解决,干脆换成 requests-futures,现在心情十分舒畅

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

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

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

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

© 2021 V2EX