我正试图在PhoneGap应用程序中通过JavaScript调用Emotion Api。我将图像编码到base64中,并验证了其中一个在线工具可以解码数据。这是我在网上找到的代码。
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”这样的图片,效果很好。但如果我拍摄同一幅图像,并将其编码为基本64位图像,我得到的只是“Bad Body”,我将其作为内容类型“application/octet stream”和“application/json”进行了尝试,并得到了相同的错误。编码的示例看起来像..和http请求
职位
https://api.projectoxford.ai/emotion/v1.0/recognize
HTTP://1.1
内容类型:应用程序/八位字节流
主持人:api.projectoxford.ai
Ocp Apim订阅密钥:
内容长度:129420
数据:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/。。。
我回来了:
Pragma:无缓存
缓存控制:无缓存
日期:2016年4月1日星期五16:23:09 GMT
X-Powered-By:ASP.NET
内容长度:60
内容类型:application/json;字符集=utf-8
过期时间:-1
{
“错误”:{
“code”:“BadBody”,
“message”:“面部图像无效。”
}
}
我现在不确定是否可以从Javascript发送这样的图像。有人能告诉我我的javascript是否正确,或者他们是否可以向网站发送一个编码的base64字符串图像吗。
谢谢你的帮助
提姆