2

PhoneGap アプリで JavaScript を使用して Emotion Api を呼び出そうとしています。画像を base64 にエンコードし、オンライン ツールの 1 つでデータをデコードできることを確認しました。これは、使用するためにWebで見つけたコードです。

var apiKey = "e371fd4333ccad2"; //(サイトで無料のキーを取得できます。これはここで変更されています)

//apiUrl: API のベース URL。API ドキュメントを介して、他の API のこれが何であるかを確認してください

「ファイル」は 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」のような画像を入れることができ、うまく機能します。しかし、同じ画像を取得して Base 64 画像としてエンコードすると、「Bad Body」だけが得られます。コンテンツ タイプ「application/octet-stream」と「application/json」の両方で試してみたところ、同じエラーが発生しました。 . エンコードされたサンプルは次のようになります..そして http リクエスト

POST https://api.projectoxford.ai/emotion/v1.0/recognize HTTP/1.1 Content-Type: application/octet-stream Host: api.projectoxford.ai Ocp-Apim-Subscription-Key: ••••• ••••••••••••••••••••••••• コンテンツの長さ: 129420

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/...

私は戻ってきます:

プラグマ: no-cache Cache-Control: no-cache Date: Fri, 01 Apr 2016 16:23:09 GMT X-Powered-By: ASP.NET Content-Length: 60 Content-Type: application/json; charset=utf-8 有効期限: -1

{ "error": { "code": "BadBody", "message": "無効な顔画像です。" } }

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

助けてくれてありがとうティム

4

1 に答える 1