2017-02-13 2 views
5

Как отправить файл и данные формы с помощью HttpClient?Как отправить файл и сформировать данные с помощью HttpClient в C#

У меня есть два способа отправить файл или данные формы. Но я хочу отправить как HTML-форму. Как я могу это сделать? Благодарю.

Это мой код:

  if (openFileDialog1.ShowDialog() == DialogResult.OK) 
    { 
     var client = new HttpClient(); 
     var requestContent = new MultipartFormDataContent(); 
     filename = openFileDialog1.FileName; 
     array = File.ReadAllBytes(filename); 
     var imageContent = new ByteArrayContent(array); 
     imageContent.Headers.ContentType = MediaTypeHeaderValue.Parse("audio/*"); 
     requestContent.Add(imageContent, "audio", "audio.wav"); 
     var values = new Dictionary<string, string> 
     { 
     { "token", "b53b99534a137a71513548091271c44c" }, 
     }; 
     var content = new FormUrlEncodedContent(values); 
     requestContent.Add(content); 
     var response = await client.PostAsync("localhost", requestContent); 
     var responseString = await response.Content.ReadAsStringAsync(); 
     txtbox.Text = responseString.ToString(); 
    } 
+1

вы уже форма/многочастным режим. Просто добавьте больше вопросов для запроса на отправку ('requestContent'). – dlatikay

+0

Я буду благодарен за объяснение, как это сделать. – user2254798

ответ

8

Вот код, я использую для размещения информации формы и CSV файл

 using (var httpClient = new HttpClient()) 
     { 
      var surveyBytes = ConvertToByteArray(surveyResponse); 

      httpClient.DefaultRequestHeaders.Add("X-API-TOKEN", _apiToken); 
      httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

      var byteArrayContent = new ByteArrayContent(surveyBytes); 
      byteArrayContent.Headers.ContentType = MediaTypeHeaderValue.Parse("text/csv"); 

      var response = await httpClient.PostAsync(_importUrl, new MultipartFormDataContent 
      { 
       {new StringContent(surveyId), "\"surveyId\""}, 
       {byteArrayContent, "\"file\"", "\"feedback.csv\""} 
      }); 

      return response; 
     } 

Это для .net 4.5.

Обратите внимание на \»в MultipartFormDataContent. Существует в MultipartFormDataContent bug.

В 4.5.1 MultipartFormDataContent упаковывает данные с правильными кавычками.

+0

спасибо .i'm noob в C#, но Можете ли вы помочь мне решить проблему? – user2254798

+0

Я дал вам рабочий пример того, как после использования MultipartFormDataContent. Я не знаю требований к сайту, на который вы пытаетесь отправить сообщение, - это токен, который должен находиться в теле или заголовок? какие типы сайта вы планируете ожидать? – Fran

+0

Если это не ответит на ваш вопрос, добавьте больше информации о том, чего именно вы пытаетесь достичь. – dlatikay

Смежные вопросы