如何通过 Dart/Flutter 中的“application/octet-stream”将 png 文件发送到 Microsoft Custom Vision?

Posted

技术标签:

【中文标题】如何通过 Dart/Flutter 中的“application/octet-stream”将 png 文件发送到 Microsoft Custom Vision?【英文标题】:How to send a png file by 'application/octet-stream' in Dart/Flutter to Microsoft Custom Vision? 【发布时间】:2020-10-16 12:03:10 【问题描述】:

我知道这个问题可能是多余的,但我正在尝试通过 POST 请求将 png 文件发送到 Flutter 中的 Microsoft Custom Vision。 这是我的代码:

void _makeRequest (File file) async 
    String url = "<url>";

    Map<String, String> headers = 
      "Content-Type": "application/octet-stream",
      "Prediction-Key": "<key>",
    ;         

    var bytes = file.readAsBytesSync();
         
    var response = await http.post(
      url,
      headers: headers,
      body: bytes,
    );

    print(response.body);
    print(response.statusCode);
  

当我运行这段代码时,我得到了这个响应:

"code":"ErrorUnknown","message":"The request entity's media type 'appliction/octet-stream' is not supported for this resource."

【问题讨论】:

你能添加你的“url”字段的值吗?看起来您可能发布到了错误的端点 "southcentralus.api.cognitive.microsoft.com/customvision/v3.0/…" 我做了一个“测试”,从互联网上发送了一张图片,它响应正常 【参考方案1】:

根据您的 comment ,我认为您使用了错误的端点/URL。由于您要发送图像,因此您必须使用如下所示的其他预测端点:

"https://southcentralus.api.cognitive.microsoft.com/customvision/v3.0/Prediction/<Project ID>/classify/iterations/<Iteration number>/image

^ 注意../image

如果还是不行,请试试下面的代码截图(对我有用):

final bytes = file.readAsBytesSync();

  var uri = Uri.parse(
      "<Prediction endpoint>");
  var request = new http.Request("POST", uri)
    ..headers['Prediction-Key'] = "<Prediction Key>"
    ..headers['Content-Type'] = "application/octet-stream"
    ..bodyBytes = bytes;

  http.Response response = await http.Response.fromStream(await request.send());
  print(request);
  print("Result: $response.statusCode");
  print(response.statusCode);
  print(response.body);

【讨论】:

以上是关于如何通过 Dart/Flutter 中的“application/octet-stream”将 png 文件发送到 Microsoft Custom Vision?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 dart/flutter 中的共享首选项保存和获取列表列表

在 Flutter 中使用 Dart,如何添加到地图列表中的地图列表中?

如何在 Dart/Flutter 中读取本地图像文件的字节数?

flutter - 如何在 dart/flutter 中收听流值

如何将 Future<dynamic> 转换为 dart:flutter 中的字符串

Dart/Flutter 中的依赖关系图?