Загрузите файл с помощью HttpClient, а также отправьте данные POST - PullRequest
0 голосов
/ 11 февраля 2020

Я пытаюсь отправить json запрос POST и сохранить возвращенный файл. Это мой код:

  var obj = new {data = "zip", name = "h.zip"};
  string objString =  JsonConvert.SerializeObject(obj);
  StringContent stringContent = new StringContent(objString, Encoding.UTF8, "application/json");


  using (var httpClient = new HttpClient())
  {
    using (var request = new HttpRequestMessage(HttpMethod.Post, downloadUrl))
    {

        var result = await httpClient.PostAsync(downloadUrl, stringContent);
        Console.WriteLine(result.StatusCode);

        var contentStream = await result.Content.ReadAsStreamAsync();
        Console.WriteLine(contentStream); // debugger confirms that there is a file present
        using (FileStream stream = new FileStream(@"C:\Users\mainuser\Desktop\downloadtest\file.zip", FileMode.Create, FileAccess.Write, FileShare.None, Int32.MaxValue)){
          Console.WriteLine("copying started");
          await contentStream.CopyToAsync(stream);
          Console.WriteLine("never gets printed");
        }
    }
  }

Он успешно создает файл .zip, но его размер составляет 0 КБ. Кроме того, Console.WriteLine("never gets printed"); никогда не выполняется. Как правильно загрузить файл, используя HttpClient?

...