2016-04-01 14 views
2

PhoneGapアプリでJavaScript経由でEmotion Apiに電話をかけようとしています。画像をbase64にエンコードし、オンラインツールの1つでデータをデコードできることを確認しました。これは、Web上で使用するコードです。Emotion API Project Oxford base64 image

var apiKey = "e371fd4333ccad2"; //(ここではここではフリーキーを取得できますが、これはここで変更されています)

// apiUrl:APIのベースURLです。 APIドキュメントで他のAPIの内容を確認してください var apiUrl = "https://api.projectoxford.ai/emotion/v1.0/recognize";

"file"はbase64文字列です。

function CallAPI(file, apiUrl, apiKey) 
    { 



     // console.log("file=> " +file); 

     $.ajax({ 
      url: apiUrl, 
      beforeSend: function (xhrObj) { 
      xhrObj.setRequestHeader("Content-Type", "application/octet-stream"); 
      xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key", apiKey); 
      }, 
      type: "POST", 
      data: file, 
      processData: false 
      }) 
    .done(function (response) { 
      console.log("in call api a"); 
      ProcessResult(response); 
      }) 
    .fail(function (error) { 
      console.log(error.getAllResponseHeaders()) 

      }); 
    } 

    function ProcessResult(response) 
    { 
    console.log("in processrult"); 
    var data = JSON.stringify(response); 
    console.log(data); 

    } 

私は戻って、この得た:

Expires: -1 

Access-Control-Allow-Origin: * 

Pragma: no-cache 

Cache-Control: no-cache 

Content-Length: 60 

Date: Fri, 01 Apr 2016 13:34:32 GMT 

Content-Type: application/json; charset=utf-8 

X-Powered-By: ASP.NET 

は、だから私は自分のコンソールテストページを試してみました。 https://dev.projectoxford.ai/docs/services/5639d931ca73072154c1ce89/operations/563b31ea778daf121cc3a5fa/console

"example.com/man.jpg"のようなイメージを入れても大丈夫です。しかし、もし私が同じイメージを取って、それがbase64のイメージとしてエンコードされていれば、私は "Bad Body"を取得しました。コンテンツタイプ "application/octet-stream"と "application/json" 。アプリケーション/ octet-streamの ホスト::api.projectoxford.ai OCP-APIM-スクリプションキー:エンコードのサンプルがlike..and HTTPリクエスト

POST https://api.projectoxford.ai/emotion/v1.0/recognize HTTP/1.1 のContent-Typeを探します••• ••••••••••••••••••••••••••••• のContent-Length:129420

データ:画像/ JPEG、BASE64、/ 9J/4AAQSkZJRgABAQAASABIAAD/...

は私が取り戻す:

プラグマ:なし-cache キャッシュ制御:no-cache 日付:金曜日、2016年4月1日16時23分9 GMT X-Powered-By:ASP.NET コンテンツの長さ:60 コンテンツタイプ:application/json; charset = UTF-8 有効期限:-1

{ "エラー":{ "コード": "BadBody"、 "メッセージ": "無効な顔画像" } }

Javascriptからこのような画像を送信できるかどうかはわかりません。私のjavascriptが正しいのか、エンコードされたbase64文字列イメージをサイトに送ることができるのか誰にでも教えてください。あなたの助け ティム

答えて

1

ため

おかげでこのAPIは、画像のデータURIを受け付けません。あなたがする必要があるのは、それをバイナリBLOBに変換することです。このanswerは、異なるProject Oxford API用ですが、同じテクニックを適用することができます。

+0

おかげさまで、それは問題でした。 – user852566