Формат изображения ошибки POST-запроса Python не поддерживается с использованием Microsoft Face API

Я пытаюсь отправить двоичный файл изображения для тестирования 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)

person Sticky    schedule 17.09.2016    source источник


Ответы (1)


Таким образом, конечная точка 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)
person Sticky    schedule 17.09.2016