Неправильная отправка изображения по почте

Я должен отправить изображение в API, который я не контролирую, чтобы он мог выполнять некоторую работу по распознаванию лиц. Кажется, что я отправляю изображение, но я предполагаю, что оно выполняется неправильно, поскольку ответ API говорит, что изображение не является файлом JPEG. Кто-нибудь может сказать мне, если я делаю это неправильно?? Я использую реализацию Xamarin HttpClient Mono:

MultipartFormDataContent content = new MultipartFormDataContent();
content.Headers.Add("X-Auth-Token", "eb27c17f-8bd6-4b94-bc4f-742e361b4e6a");

var imageContent = new ByteArrayContent(ultimaImagen);
content.Headers.ContentType = MediaTypeHeaderValue.Parse("image/jpeg");

content.Add(imageContent, "image", "image.jpg");

try
{
    HttpResponseMessage response = await _client.PostAsync("https://10.54.66.160:9000/3/matching/search?list_id=3c9f2623-28be-435f-a49f-4dc29c186809&limit=1", content);

    string responseContent = await response.Content.ReadAsStringAsync();
}
catch (Exception ex)
{
    throw;
}

Это ответ API:

{
    "detail": "Failed to decode image data. Detail: Not a JPEG file: starts with 0x2d 0x2d",
    "error_code": 3001
}

1 ответ

Решение

Наконец, я смог выяснить, что является причиной проблемы. Не нужно было отправлять MultipartFormDataContent, Только с ByteArrayContent работал просто отлично. Это рабочий код:

    private async void btnVerificar_Clicked(object sender, EventArgs e)
    {
        var imageContent = new ByteArrayContent(ultimaImagen);
        imageContent.Headers.Add("X-Auth-Token", "eb27c17f-8bd6-4b94-bc4f-742e361b4e6a");
        imageContent.Headers.ContentType = MediaTypeHeaderValue.Parse("image/jpeg");

        try
        {
            HttpResponseMessage response = await _client.PostAsync("https://10.54.66.160:9000/3/matching/search?list_id=3c9f2623-28be-435f-a49f-4dc29c186809&limit=1", imageContent);

            string responseContent = await response.Content.ReadAsStringAsync();

            if (response.StatusCode == System.Net.HttpStatusCode.OK)
            {
                await DisplayAlert("MobileAccessControl", responseContent, "OK");
            }
            else
            {
                await DisplayAlert("MobileAccessControl", "Read not OK.", "OK");
            }
        }
        catch (Exception ex)
        {
            throw;
        }
    }
Другие вопросы по тегам