Flutter:如何将 POST 图像 http 到 Microsoft 认知服务
Flutter: How to http POST image to Microsoft Cognitive Services
我正在尝试 POST 从相机拍摄的图像到 Microsoft 认知服务的人脸 API(使用 Face - Detect method)。但是,当我尝试 returns 时 'Response 415':
{
"error": {
"code": "BadArgument",
"message": "Invalid Media Type."
}
}
这是我的这个方法的代码:
final bytes = image.readAsBytesSync();
var uri = Uri.parse("https://australiaeast.api.cognitive.microsoft.com/face/v1.0/detect?returnFaceId=true&returnFaceLandmarks=false");
var request = new http.MultipartRequest("POST", uri);
var multipartFile = new http.MultipartFile.fromBytes('url', bytes, contentType: new MediaType('image', 'jpeg'));
request.headers['Ocp-Apim-Subscription-Key'] = "9c261636281d42c0947d89fe3982df73";
request.headers['Content-Type'] = "application/octet-stream";
request.files.add(multipartFile);
var response = await request.send();
print(request);
print(response.statusCode);
response.stream.transform(utf8.decoder).listen((value) {
print(value);
}
我使用 Flutter Image Picker 插件拍摄照片并使其在屏幕上正常显示。我在 Microsoft Cognitive Services 上尝试过的所有其他操作都工作正常 - 只是上传这张图片给我带来了问题。
我认为你不需要 MultipartRequest
而只需要 Request
并分配 bodyBytes
属性:
final bytes = image.readAsBytesSync();
var uri = Uri.parse("https://australiaeast.api.cognitive.microsoft.com/face/v1.0/detect?returnFaceId=true&returnFaceLandmarks=false");
var request = new http.Request("POST", uri)
..headers['Ocp-Apim-Subscription-Key'] = "9c261636281d42c0947d89fe3982df73"
..headers['Content-Type'] = "application/octet-stream"
..bodyBytes = bytes;
var response = await request.send();
print(request);
print(response.statusCode);
response.stream.transform(utf8.decoder).listen((value) {
print(value);
});
我正在尝试 POST 从相机拍摄的图像到 Microsoft 认知服务的人脸 API(使用 Face - Detect method)。但是,当我尝试 returns 时 'Response 415':
{
"error": {
"code": "BadArgument",
"message": "Invalid Media Type."
}
}
这是我的这个方法的代码:
final bytes = image.readAsBytesSync();
var uri = Uri.parse("https://australiaeast.api.cognitive.microsoft.com/face/v1.0/detect?returnFaceId=true&returnFaceLandmarks=false");
var request = new http.MultipartRequest("POST", uri);
var multipartFile = new http.MultipartFile.fromBytes('url', bytes, contentType: new MediaType('image', 'jpeg'));
request.headers['Ocp-Apim-Subscription-Key'] = "9c261636281d42c0947d89fe3982df73";
request.headers['Content-Type'] = "application/octet-stream";
request.files.add(multipartFile);
var response = await request.send();
print(request);
print(response.statusCode);
response.stream.transform(utf8.decoder).listen((value) {
print(value);
}
我使用 Flutter Image Picker 插件拍摄照片并使其在屏幕上正常显示。我在 Microsoft Cognitive Services 上尝试过的所有其他操作都工作正常 - 只是上传这张图片给我带来了问题。
我认为你不需要 MultipartRequest
而只需要 Request
并分配 bodyBytes
属性:
final bytes = image.readAsBytesSync();
var uri = Uri.parse("https://australiaeast.api.cognitive.microsoft.com/face/v1.0/detect?returnFaceId=true&returnFaceLandmarks=false");
var request = new http.Request("POST", uri)
..headers['Ocp-Apim-Subscription-Key'] = "9c261636281d42c0947d89fe3982df73"
..headers['Content-Type'] = "application/octet-stream"
..bodyBytes = bytes;
var response = await request.send();
print(request);
print(response.statusCode);
response.stream.transform(utf8.decoder).listen((value) {
print(value);
});