2016-05-02 1 views
0

Я пытался решить эту ошибку, но я не могу найти то, что кажется неправильным.Microsoft Face API жалуется на плохой ключ, но ключ работает в консоли?

Я пользуюсь 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 все работает отлично. Поэтому я уверен, что это не ключ.

Ошибка должна быть в моем коде, но я не могу ее найти.

Любой наконечник в правильном направлении, будет понятно, Благодаря

ответ

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) 

Кроме того, URL к изображению не указывает на действительный файл JPEG (расширение искажен, вероятно, опечатка).

Смежные вопросы