Я пытаюсь позвонить в Emotion Api через JavaScript с помощью приложения PhoneGap. Я закодировал изображение в base64 и проверил, что данные могут быть декодированы одним из онлайн-инструментов. это код, который я нашел в Интернете для использования.Проект API Emotion Oxford base64 image
var apiKey = "e371fd4333ccad2"; // (вы можете получить бесплатный ключ на сайте, это изменение здесь)
// apiUrl: базовый URL для API. Узнайте, что это для других API-интерфейсов через документацию API. var apiUrl = "https://api.projectoxford.ai/emotion/v1.0/recognize";
«файл» - это строка 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», и оно отлично работает. но если я беру одно и то же изображение и кодирую его как базовое 64-образное изображение, которое я получаю, это «Плохое тело», я попробовал его как в качестве типа контента «application/octet-stream», так и «application/json» и получить ту же ошибку , Образец кодируемого выглядит просьбой об like..and HTTP
POST https://api.projectoxford.ai/emotion/v1.0/recognize HTTP/1.1 Content-Type: применение/октет-поток Хост: api.projectoxford.ai OCP-Apim-Подписка-ключ: ••• ••••••••••••••••••••••••••••• Content-Length: 129420
данные: изображение/JPEG; base64,/9J/4AAQSkZJRgABAQAASABIAAD/...
я вернусь:
Pragma: нет -cache Cache-Control: no-cache Дата: Пт, 01 апр 2016 16:23:09 GMT X-Powered by By: ASP.NET Content-Length: 60 Content-Type: application/json; кодировка = UTF-8 Expires: -1
{ "ошибка": { "код": "BadBody", "сообщение" : "Invalid изображение лица." } }
Я теперь не уверен, что вы можете отправить изображение, подобное этому или нет, из Javascript. Может кто-нибудь сказать мне, если мой javascript верен, или если они могут отправить закодированное строковое изображение base64 на сайт.
спасибо за вашу помощь тим
спасибо, это была проблема, с помощью blob она отлично работала ... еще раз спасибо ... – user852566