【问题标题】:Problem calling the prediction endpoint uploading an image using rest sharp for the Microsoft custom vision API cognitive service为 Microsoft 自定义视觉 API 认知服务调用预测端点上传图像时出现问题
【发布时间】:2019-06-16 11:59:43
【问题描述】:

我正在尝试使用 Restsharp 将图像上传到 Microsoft 自定义视觉 API 预测端点,我正在尝试使用 AddFile 方法,但结果却收到了 BadRequest,这是我正在使用的代码

public IRestResponse<PredictionResponse> Predict(string imageFileName)
    {
        var file = new FileInfo(imageFileName);
        var serviceUrl = ConfigurationManager.AppSettings["api.custom-vision.prediction.url.file"];
        var serviceKey = ConfigurationManager.AppSettings["api.custom-vision.key"];
        var client = new RestClient(serviceUrl);
        var request = new RestRequest(Method.POST);
        request.AddHeader("Content-Type", "application/octet-stream");
        request.AddHeader("Prediction-Key", serviceKey);
        request.AddFile(file.Name, file.FullName);
        var response = client.Execute<PredictionResponse>(request);
        return response;
    }

当我执行该方法时,我会从服务中得到以下响应

{
  "code": "BadRequestImageFormat",
  "message": "Bad Request Image Format, Uri: 1062fe0480714281abe2daf17beb3ac5"
}

【问题讨论】:

    标签: c# restsharp microsoft-custom-vision


    【解决方案1】:

    在restsharp文档中寻找正确上传文件的方法后,我得到了解决方案,它需要作为参数传递,参数类型为ParameterType.RequestBody的字节数组

    这是实际工作的方法示例

    public IRestResponse<PredictionResponse> Predict(string imageFileName)
            {
                var file = new FileInfo(imageFileName);
                var serviceUrl = ConfigurationManager.AppSettings["api.custom-vision.prediction.url.file"];
                var serviceKey = ConfigurationManager.AppSettings["api.custom-vision.key"];
                var client = new RestClient(serviceUrl);
                var request = new RestRequest(Method.POST);
                request.AddHeader("Content-Type", "application/octet-stream");
                request.AddHeader("Prediction-Key", serviceKey);
                request.AddParameter("content", File.ReadAllBytes(file.FullName), ParameterType.RequestBody);
                var response = client.Execute<PredictionResponse>(request);
                return response;
            }
    

    【讨论】:

      猜你喜欢
      • 2019-10-20
      • 1970-01-01
      • 2017-10-12
      • 2021-01-14
      • 1970-01-01
      • 2016-10-06
      • 2019-09-21
      • 1970-01-01
      • 2019-07-22
      相关资源
      最近更新 更多