2016-06-19 17 views
0

Microsoft's FaceAPIを使用して画像からJSONデータを取得しようとしています。私はStatusCode OKを受け取っていますが、重要なものは何も戻っていません。私は、MemoryStreamがファイルに保存することによって(Imageコントロールから取得している)正しいデータを持っていることを確認しました。Microsoft FaceAPIからJSONデータを受信して​​いません

private async Task<string> GetJSON() 
    { 
     var client = new HttpClient(); 
     var queryString = HttpUtility.ParseQueryString(string.Empty); 

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

     // Request parameters 
     queryString["returnFaceId"] = "true"; 
     queryString["returnFaceLandmarks"] = "false"; 
     var uri = "https://api.projectoxford.ai/face/v1.0/detect?" + queryString; 

     HttpResponseMessage response; 

     // Request body 
     byte[] byteData = ImageToByte(); 


     using (var content = new ByteArrayContent(byteData)) 
     { 
      content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); 
      response = await client.PostAsync(uri, content); 
     } 

     return ""; 
    } 

    private byte[] ImageToByte() 
    { 
     using (MemoryStream stream = new MemoryStream()) 
     { 
      videoBox.Dispatcher.Invoke(delegate 
      { 
       var encoder = new PngBitmapEncoder(); 

       var flippedBitmap = new TransformedBitmap(); 
       flippedBitmap.BeginInit(); 
       flippedBitmap.Source = (BitmapSource)videoBox.Source; 
       var transform = new ScaleTransform(-1, 1); 
       flippedBitmap.Transform = transform; 
       flippedBitmap.EndInit(); 
       encoder.Frames.Add(BitmapFrame.Create(flippedBitmap)); 
       encoder.Save(stream); 

      }); 

      using (FileStream test = new FileStream("snapshot.bmp", FileMode.Create)) 
      { 
       stream.Position = 0; 
       stream.CopyTo(test); 
      } 

      return stream.ToArray(); 
     } 
    } 

答えて

1

JSONを入手するには、await response.Content.ReadAsStringAsync()に電話してください。

また、配管を行うMicrosoft.ProjectOxford.Face NuGetパッケージを使用することもできます。また、C#タイプを提供することで、JSONの構文解析の手間を軽減できます。

+0

パッケージを使用することは私がやったことです。まだよく知って良い。ありがとうございました! –

0

Iは、AC#プログラマはないですが、あなたのコードを見た後、方法GetJSONは、あなたがこの方法または第二の理由を呼び出した後にサーバーから何もでき取得されていません原因である可能性があります、ハードコードされた空の文字列を返します非同期サーバー構成が正しく機能していないため、最初に空白が返され、後で実際の操作を行います。

+0

私は実際にはまだ関数を使用していませんが、(ブレークポイントの助けを借りて)応答の値を調べると、いくつかのデータを提供しますが、それはイメージに関係しません。 –

関連する問題