4

Alloy Appcelerator で Google Vision API v1 を使おうとしていました

リクエスト HTTPClient を作成し、API https://vision.googleapis.com/v1/images:annotate?key=MY_APP_KEYを呼び出します

しかし、私はグーグルから応答テキストを取得しました:

  {
 error = {
     code = 400;
     details = (
                  {
                     "@type" = "type.googleapis.com/google.rpc.BadRequest";
                      fieldViolations = ({
                                        description = "Invalid JSON payload received. Unknown name \"request\": Cannot bind query parameter. Field 'request' could not be found in request message.";
                                        });
                  }
                );
     message = "Invalid JSON payload received. Unknown name \"request\": Cannot bind query parameter. Field 'request' could not be found in request message.";
     status = "INVALID_ARGUMENT";
  };

}

そして、AlloyによるHTTPリクエストを使用する私のコードがあります

var requests =  
{
  "requests":[
    {
      "image":{
        "content": "image_have_encodebase64",
      },
      "features":[
        {
          "type":"TEXT_DETECTION",
          "maxResults":1
        }
      ]
    }
  ]
};
var xhr = Titanium.Network.createHTTPClient();
xhr.open("POST", 'https://vision.googleapis.com/v1/images:annotate?key=MY_APP_KEY');
xhr.send(JSON.stringify(requests));

ご協力いただきありがとうございます

4

1 に答える 1

7

Content-LengthおよびContent-Typeヘッダーを設定することで、次のように動作するはずです。

xhr.setRequestHeader("Content-Length", size);
xhr.setRequestHeader("Content-Type", "application/json");

また、Google は画像のサイズを 1024 x 768 に変更することを推奨しています。次の方法で画像のサイズを変更できます。

img = img.imageAsResized(1024,768);

コードにこれらの変更を加えた後、すべてが機能しました。

于 2017-05-16T03:27:05.453 に答える