HttpClient не будет работать - PullRequest
0 голосов
/ 13 мая 2018

Итак, я пытаюсь отправить мультиформный POST в API с http-клиентом, но он просто висит там неопределенно долго.Я тестирую этот код в консоли, и он работает как надо, но затем я пытаюсь запустить его таким образом для пользовательского интерфейса

private static async Task<string> ApiTask(...)
{
    var SourceStream = File.Open(imgpath,FileMode.Open);
    var FileStreamContent = new StreamContent(SourceStream);
    FileStreamContent.Headers.ContentType = MediaTypeHeaderValue.Parse("image/jpeg");
    var client = new HttpClient();
    using (var formData = new MultipartFormDataContent())
    {
        formData.Add(new StringContent("this is a test"),"comment");
        formData.Add(new StringContent("Command: detect"),"message");
        formData.Add(fileStreamContent, "image","image.jpg");
        var response = await client.PostAsync(url,formData).ConfigureAwait(false);
        var responseString = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
        return responseString
    }
}

И я вызываю его из EventHandler

public async void buttnclck(object sender, EventArgs e)
{
    var task = await ApiTask(...);
    lblresult.Text = task;
}

но, как я уже сказал, код просто остается в строке de .PostAsync неопределенно или при возникновении исключения System.Threading.Task.TaskCanceledException.

Так чего мне здесь не хватает?Я думаю, что я справлялся с асинхронными / ожидающими методами просто отлично, но ясно, что нет.Я пытался также с .Result, но он не будет работать даже и выкинул бы исключение System.AggregateException.Поэтому, пожалуйста, помогите, пытаясь заставить его работать, изменяя код, как другие предложенные ответы, но все еще не работает

РЕДАКТИРОВАТЬ: после нескольких часов отладки и поиска я обнаруживаю, что моя проблема зависит от formData.Add(FileStreamContent, "image","image.jpg"); возможно янеправильно сериализовать изображение?Как я могу это исправить??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...