Почему я получаю недопустимую полезную нагрузку JSON при вызове API облачного видения Google из appcelerator?
Я пытался использовать Google Vision API v1 от Alloy Appcelerator
Я создаю запрос HTTPClient и вызываю API https://vision.googleapis.com/v1/images:annotate?key=MY_APP_KEY
Но я получил текст ответа от Google:
{
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";
};
}
И есть мой код использовать HTTP-запрос от Alloy
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));
Спасибо за вашу помощь
1 ответ
Установив Content-Length
а также Content-Type
Заголовки должны работать:
xhr.setRequestHeader("Content-Length", size);
xhr.setRequestHeader("Content-Type", "application/json");
Также следует отметить, что Google рекомендует изменить размер изображения до 1024 x 768 - вы можете изменить размер изображения с помощью:
img = img.imageAsResized(1024,768);
После внесения этих изменений в мой код у меня все заработало.