Python POST请求错误"图像格式不受支持"使用Microsoft Face API

时间:2016-09-17 20:38:17

标签: python azure python-requests azure-api-apps microsoft-cognitive

我尝试发送二进制图像文件来测试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)

1 个答案:

答案 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)