【发布时间】:2018-02-21 23:06:37
【问题描述】:
我正在请求人脸比较 API。您在哪里发送 2 张图片,如果它们是同一个人,它会返回这里是链接: Face++ API
在文档中,他们提到您可以这样请求:
curl -X POST "https://api-us.faceplusplus.com/facepp/v3/compare" \
-F "api_key=<api_key>" \
-F "api_secret=<api_secret>" \
-F "face_token1=c2fc0ad7c8da3af5a34b9c70ff764da0" \
-F "face_token2=ad248a809408b6320485ab4de13fe6a9"
这是我的代码:
result = json.loads(os.popen('curl -X POST "https://api-us.faceplusplus.com/facepp/v3/compare/api_key=myKey/api_secret=mySecret/https://us-mc-prod-asset.oss-us-west-1.aliyuncs.com/mc-official/scripts/demoScript/images/demo-pic33.jpg/https://us-mc-prod-asset.oss-us-west-1.aliyuncs.com/mc-official/scripts/demoScript/images/demo-pic39.jpg"').read())
但是当我运行它时,我得到了这个:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
Traceback (most recent call last):
File "/Users/max/Desktop/Programming/Face/venv/face.py", line 15, in <module>
result = json.loads(os.popen('curl -X POST "https://api-us.faceplusplus.com/facepp/v3/compare/api_key=myKey/api_secret=mySecret/https://us-mc-prod-asset.oss-us-west-1.aliyuncs.com/mc-official/scripts/demoScript/images/demo-pic33.jpg/https://us-mc-prod-asset.oss-us-west-1.aliyuncs.com/mc-official/scripts/demoScript/images/demo-pic39.jpg"').read())
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
我尝试以另一种方式使用请求:
result = requests.get( "https://api-us.faceplusplus.com/facepp/v3/compare/api_key=myKey/api_secret=mySecret/https://us-mc-prod-asset.oss-us-west-1.aliyuncs.com/mc-official/scripts/demoScript/images/demo-pic33.jpg/https://us-mc-prod-asset.oss-us-west-1.aliyuncs.com/mc-official/scripts/demoScript/images/demo-pic39.jpg")
但是,我得到了这个:
<Response [404]>
【问题讨论】:
-
这意味着解码 JSON 时出错,因为解析器不知道如何处理额外的数据。据推测,API 不会返回单个有效的 JSON 对象,但您必须查看实际下载的内容才能确定。
-
os.popen(' ... ').read()调用的输出是什么?就像乔恩说的,我怀疑它不是 JSON -
谢谢大家。 @sam 我添加了 os.popen(..).read() 的输出