0

私は Azure (Microsoft) の感情 API でアプリケーションを構築しましたが、それはコグニティブ サービスの顔 API とマージされたばかりです。私はウェブカメラを使用して画像 (バイナリ データ) をサーバーに送信して分析し、代わりに xml を取得していました。(この例では、いくつかの古いコードを既にコメントアウトしています。修正しようとしています)。

function saveSnap(data){
    // Convert Webcam IMG to BASE64BINARY to send to EmotionAPI
    var file = data.substring(23).replace(' ', '+');
    var img = Base64Binary.decodeArrayBuffer(file);


    var ajax = new XMLHttpRequest();

    // On return of data call uploadcomplete function.
    ajax.addEventListener("load", function(event) {
      uploadcomplete(event);
    }, false);

    // AJAX POST request
    ajax.open("POST", "https://westcentralus.api.cognitive.microsoft.com/face/v1.0/detect?returnFaceId=true&returnFaceLandmarks=false&returnFaceAttributes=emotion","image/jpg");
      ajax.setRequestHeader("Content-Type","application/json");
      //ajax.setRequestHeader("Accept","text/html,application/xhtml+xml,application/xml");
      ajax.setRequestHeader("Ocp-Apim-Subscription-Key","subscription_key");
      ajax.send(img);
}

彼らのウェブサイトから、呼び出しが JSON を返すことがわかりました。しかし、私はそれを機能させることができません。データが返されていることがわかりますが、JSON を取得するにはどうすればよいでしょうか。おそらく何か重要なものが欠けているので、誰かが助けてくれることを願っています。:) Emotion API をまだ使用できるとき、プログラムは機能していました。

function uploadcomplete(event){
  console.log("complete");
  console.log(event);
    //var xmlDoc = event.target.responseXML;
    //var list = xmlDoc.getElementsByTagName("scores");
  console.log(JSON.stringify(event));
4

1 に答える 1

0

対処すべきいくつかの問題:

  1. アップロードの完了だけでなく、POST 応答を待つ必要があります。
  2. application/octet-streamそのままバイナリをアップロードする場合は、コンテンツ タイプを に設定する必要があります。
  3. サブスクリプション キーを実際の値に設定する必要があります (おそらく、コードをここに貼り付ける前に設定したはずです)。

.

function saveSnap(data) {
  // Convert Webcam IMG to BASE64BINARY to send to EmotionAPI
  var file = data.substring(23).replace(' ', '+');
  var img = Base64Binary.decodeArrayBuffer(file);

  ajax = new XMLHttpRequest();

  ajax.onreadystatechange = function() {
    if (ajax.readyState == XMLHttpRequest.DONE) {
      console.log(JSON.stringify(ajax.response));
    }
  }

  ajax.open('post', 'https://westcentralus.api.cognitive.microsoft.com/face/v1.0/detect?returnFaceId=true&returnFaceLandmarks=false&returnFaceAttributes=emotion');
  ajax.setRequestHeader('Content-Type', 'application/octet-stream');
  ajax.setRequestHeader('Ocp-Apim-Subscription-Key', key);
  ajax.send(img);
}
于 2018-03-04T02:09:18.093 に答える