我尝试发送二进制图像文件来测试Microsoft Face API。使用POSTMAN工作得很好,我按预期返回faceId
。但是,我尝试将其转换为Python代码,它当前给了我这个错误:
{"error": {"code": "InvalidImage", "message": "Decoding error, image format unsupported."}}
我读了这个SO post,但它没有帮助。这是我发送请求的代码。我试图模仿POSTMAN正在做的事情,比如用标题application/octet-stream
标记它,但它不起作用。有什么想法吗?
url = "https://api.projectoxford.ai/face/v1.0/detect"
headers = {
'ocp-apim-subscription-key': "<key>",
'content-type': "application/octet-stream",
'cache-control': "no-cache",
}
data = open('IMG_0670.jpg', 'rb')
files = {'IMG_0670.jpg': ('IMG_0670.jpg', data, 'application/octet-stream')}
response = requests.post(url, headers=headers, files=files)
print(response.text)
答案 0 :(得分:5)
因此API端点采用字节数组,但也需要输入体参数为data
,而不是files
。无论如何,下面这段代码对我有用。
url = "https://api.projectoxford.ai/face/v1.0/detect"
headers = {
'ocp-apim-subscription-key': "<key>",
'Content-Type': "application/octet-stream",
'cache-control': "no-cache",
}
data = open('IMG_0670.jpg', 'rb').read()
response = requests.post(url, headers=headers, data=data)
print(response.text)