CustomVision API returns “操作返回无效状态代码:'Bad Request'”

CustomVision API returns “Operation returned an invalid status code: 'Bad Request'”

像这样使用 CustomVisionPredictionClient 时出现此错误:

var predictionApi = new CustomVisionPredictionClient()
{
    ApiKey = _predictionKey,
    Endpoint = "https://westeurope.api.cognitive.microsoft.com"
};
var result = await predictionApi.ClassifyImageAsync(project.Id, _modelName, imageData);

这里有两个问题需要解决。

你的特别"Bad Request"

具体来说,您的示例存在一个或多个您没有真正包含的问题。

  1. _modelName 格式不正确
  2. imageData 格式不正确
  3. 某些配置(可能是请求 headers)丢失或不正确

这是我们从您提供的示例中所能提供的最多信息。但是,其他 关注点将在未来对您大有裨益:"Bad Request" 告诉您 很多 所发生的事情。

关于 "Bad Request" 的更多信息

如果您查看 HTTP status codes 内的范围,您会注意到 "error" 范围内的模式。

  1. 4xx中请求者(您)做错了,您可以改正。
  2. 5xx 中,响应者做错了事,你 不能 更正它。

在那之下:

  1. 404 Not Found 中,请求似乎形成良好,但响应者无法找到您所请求的内容
  2. 401 Unauthorized 中您没有提供任何类型的身份
  3. 403 Forbidden 中,您 确实 提供了身份,但不允许您执行此操作

但在 400 Bad Request 中,响应者根本无法将您的请求验证为良好输入 。这意味着您可以再次查看 API 文档,将其与您的实现进行比较,然后再试一次。

问题是我创建了一个 "Object Detection" 类型的项目并尝试将其与 ClassifyImage() 一起使用,而后者必须与 "Classification" 类型的项目一起使用。所以我必须改用 DetectImage() 。 :)