【发布时间】:2018-02-22 20:50:13
【问题描述】:
我正在尝试将找到的 Microsoft Azure OCR API here 用于 React Native 应用程序。
我可以使用 Postman 让 API 在本地图像上正常工作,但由于某种原因,当我尝试在我的应用中使用 fetch 时,我得到了“不支持的媒体类型”。
我最初用这个代码调用了 api:
_analyzeImage = () => {
const { image } = this.state;
const url = 'https://westcentralus.api.cognitive.microsoft.com/vision/v1.0/ocr';
const data = new FormData();
data.append(image);
fetch(url, {
method: 'post',
body: data,
headers: {
'Ocp-Apim-Subscription-Key': '***********************',
}
}).then(res => {
console.log(res)
});
}
image 的样子:
当使用 XCode 模拟器运行时,产生:
然后回应:
{
"code":"UnsupportedMediaType",
"requestId":"6ff43374-e5f9-4992-9657-82ec1e95b238",
"message": "Supported media types: application/octet-stream, multipart/form-data or application/json"
}
奇怪的是,content-type 似乎是 test/plain。因此,即使我认为 FormData 对象应该处理内容类型,我尝试添加 'content-type': 'multipart/form-data',但得到了相同的响应(尽管网络检查器中的 content-type 标头确实更改为 multipart/form-data。
我使用create-react-native-app 设置项目,并希望在 iOS 和 android 上工作。如果有人有任何想法 - 或任何其他方式进行 OCR,如果有更好的本地解决方案 - 我将不胜感激!
【问题讨论】:
-
您确定它采用的是表单数据而不是八位字节流?
-
另外,您的请求负载看起来也不正确。应该是所有二进制 mumbo-jumbo 而不是对象对象。
-
它可以采用表单数据或八位字节流,请参阅here。有效载荷应该是什么?现在,我的函数中的“图像”是 URI。
标签: reactjs azure http react-native fetch