我一直试图解决这个错误,但我找不到似乎错误的东西。
我正在使用Microsoft Cognitive Services Face API
python
。这是我的代码:
import requests
import json
import http.client, urllib, base64, json
body = {"URL": "http://www.scientificamerican.com/sciam/cache/file/35391452-5457-431A-A75B859471FAB0B3.jsdfpg" }
headers = {
"Content-Type": "application/json",
"Ocp-Apim-Subscription-Key": "xxx"
}
try:
r=requests.post('https://api.projectoxford.ai/face/v1.0/detect?returnFaceId=true&returnFaceLandmarks=false&returnFaceAttributes=age,gender',json.dumps(body) , headers)
print(r.content)
except Exception as e:
print(format(e))
当我运行脚本时,我得到:
"code":"Unspecified","message":"Access denied due to invalid subscription key. Make sure you are subscribed to an API you are trying to call and provide the right key."
问题是,当我在console上放置完全相同的密钥时,一切正常。所以我很确定这不是关键。
错误必须在我的代码上,但我找不到它。
任何正确方向的提示都将受到赞赏, 感谢
答案 0 :(得分:3)
错误在于您符合 request.post 调用的方式。此函数的参数是位置的,如此另一个post中所述,因此标题不作为标题传递,因此无法识别键。如果指定每个参数是什么,则将避免此错误。那就是:
r=requests.post('https://api.projectoxford.ai/face/v1.0/detect?returnFaceId=true&returnFaceLandmarks=false&returnFaceAttributes=age,gender',params=None, data = json.dumps(body), headers = headers)
此外,图片的网址并未指向有效的JPEG文件(扩展名为乱码,可能是拼写错误)。