Итак, я пытаюсь отправить мультиформный 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");
возможно янеправильно сериализовать изображение?Как я могу это исправить??