Я пытаюсь вызвать API Azure Computer Vision, а именно файл пакетного чтения [POST], используя RestSharp. Все работает нормально в коде ниже:
private void MakeBatchReadRequest(string imageFilePath)
{
try
{
RestClient client = new RestClient("https://southeastasia.api.cognitive.microsoft.com/");
client.AddDefaultHeader("Ocp-Apim-Subscription-Key", subscriptionKey);
RestRequest request = new RestRequest("vision/v2.0/read/core/asyncBatchAnalyze", Method.POST);
request.AddHeader("Content-Type", "application/octet-stream");
byte[] byteData = GetImageAsByteArray(imageFilePath);
request.AddParameter("application/octet-stream", byteData, ParameterType.RequestBody);
RestResponse response = client.Execute(request);
operationLocation = response.Headers.Where(x => x.Name == "Operation-Location").First.Value;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Мне не нужно было включать параметр mode
, поскольку в соответствии с документацией API, видимой здесь , это было необязательно, и значением по умолчанию было Printed
, которое было тем, что я уже хотел. Однако, если я добавлю параметр mode
(на всякий случай я передумал и переключусь на что-то другое) в запросе, как показано ниже:
private void MakeBatchReadRequest(string imageFilePath)
{
try
{
RestClient client = new RestClient("https://southeastasia.api.cognitive.microsoft.com/");
client.AddDefaultHeader("Ocp-Apim-Subscription-Key", subscriptionKey);
RestRequest request = new RestRequest("vision/v2.0/read/core/asyncBatchAnalyze", Method.POST);
request.AddHeader("Content-Type", "application/octet-stream");
byte[] byteData = GetImageAsByteArray(imageFilePath);
request.AddParameter("application/octet-stream", byteData, ParameterType.RequestBody);
request.AddParameter("mode", "Printed") // This will cause the web API to return an error response.
RestResponse response = client.Execute(request);
operationLocation = response.Headers.Where(x => x.Name == "Operation-Location").First.Value;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
API возвращает код состояния ответа 415
и описание статуса Unsupported Media Type
. Весь ответ JSON ниже:
{
"error": {
"code": "BadArgument",
"message": "Unsupported media type."
}
}
Я не совсем уверен, как добавление простого параметра в запрос может вызвать ошибку API. Кроме того, я не уверен, почему ответ об ошибке Unsupported Media Type
, так как я использую файл изображения JPG
, который поддерживается и устанавливаю его тип содержимого как application/octet-stream
в запросе.
Любая помощь будет принята с благодарностью.