2017-02-13 34 views
5

如何使用HttpClient發送文件和表單數據?如何使用C#中的HttpClient發送文件和表單數據

我有兩種方法發送文件或表單數據。但我想發送一個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

相關問題