2017-02-07 2 views
0

Я пытаюсь получить простую функциональность от Face API Microsoft, используя этот пример, при условии (link):400 Bad Request C# Microsoft Face Api

// Request headers 
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "{subscription key}"); 

// Request parameters 
queryString["returnFaceId"] = "true"; 
queryString["returnFaceLandmarks"] = "false"; 
queryString["returnFaceAttributes"] = "{string}"; 
var uri = "https://westus.api.cognitive.microsoft.com/face/v1.0/detect?" + queryString; 

HttpResponseMessage response; 

// Request body 
byte[] byteData = Encoding.UTF8.GetBytes("{body}"); 

using (var content = new ByteArrayContent(byteData)) 
{ 
    content.Headers.ContentType = new MediaTypeHeaderValue("< your content type, i.e. application/json >"); 
    response = await client.PostAsync(uri, content); 
} 

Всякий раз, когда я выполняю код, я получаю 400 плохой запрос , из которых я не могу понять конкретную причину. Вот так выглядит мое:

// Request headers 
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "xxxxxxxxxxxxxxxxxxxxxxx"); 

// Request parameters 
queryString["returnFaceId"] = "true"; 
queryString["returnFaceLandmarks"] = "false"; 
queryString["returnFaceAttributes"] = "Age"; 
var uri = "https://westus.api.cognitive.microsoft.com/face/v1.0/detect?" + queryString; 

HttpResponseMessage response; 

// Request body 
byte[] byteData = Encoding.UTF8.GetBytes("{ \"url\":\"http://i0.kym-cdn.com/photos/images/newsfeed/000/272/907/dc1.jpg/ \"}"); 

using (var content = new ByteArrayContent(byteData)) 
{ 
    content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); 
    response = await client.PostAsync(uri, content); 
    Console.Write(response.StatusCode); 
} 
+1

Ну, у вас на вашем URL есть хвост '/', который, вероятно, не помогает, поскольку это означает, что ваш образ не возвращается. – DavidG

+0

Спасибо, Дэвид за резолюцию. Дополнительным слэш в конце URL был виновником. –

ответ

0

Код выглядит прекрасно, и единственная проблема, которую я вижу, - это то, что ваше изображение недоступно. Я получаю отказ в доступе, если я пытаюсь получить доступ к изображению напрямую через браузер. Это что-то, что вы проверили?

Я попытался ниже код и он работает отлично:

вар клиента = новый HttpClient(); var queryString = HttpUtility.ParseQueryString (string.Empty);

  // Request headers 
      client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key","please use your key"); 

      // Request parameters 
      queryString["returnFaceId"] = "true"; 
      queryString["returnFaceLandmarks"] = "false"; 
      queryString["returnFaceAttributes"] = "age"; 
      var uri = "https://westus.api.cognitive.microsoft.com/face/v1.0/detect?" + queryString; 

      HttpResponseMessage response; 

      // Request body 
      byte[] byteData = Encoding.UTF8.GetBytes("{ \"url\":\"https://lh5.googleusercontent.com/-AI__M0nZDU4/AAAAAAAAAAI/AAAAAAAAAGs/P5tdI3rFaFs/s0-c-k-no-ns/photo.jpg \"}"); 


      using (var content = new ByteArrayContent(byteData)) 
      { 
       content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); 

       response = await client.PostAsync(uri, content); 

       Console.Write(response.StatusCode); 

      } 
+0

Я сказал это в комментарии 20 минут назад, почему вы почувствовали, что нужен ответ? – DavidG

+0

Извинения Дэвид. Я не видел вашего ответа в 0,18, и все, что я делал, это набрать мой ответ (мне потребовалось время, чтобы закончить). Твой - точный ответ! –