2017-06-16 39 views
2

我一直在衝浪和工作幾個小時,現在我讀了扔我的電腦。將WebClient轉換爲HttpClient

我有一個WPF應用程序上的WebClient需要轉換爲HttpClient UWP應用程序。我收到很多頭文件錯誤,因爲我不是網絡專家,所以我打敗了自己。

這裏的原件,如果有人會非常善良,並幫助我將其轉換爲HttpClient我會非常感激。

 using (var client = new WebClient()) 
     { 
      string request = "------WebKitFormBoundarygWsJMIUcbjwBPfeL" 
          + Environment.NewLine 
          + "Content-Disposition: form-data; name=\"guid\"" 
          + Environment.NewLine 
          + Environment.NewLine 
          + presetSmall.PresetId.ToString() 
          + Environment.NewLine 
          + "------WebKitFormBoundarygWsJMIUcbjwBPfeL" 
          + Environment.NewLine 
          + "Content-Disposition: form-data; name=\"delay\"" 
          + Environment.NewLine 
          + Environment.NewLine 
          + "0" 
          + Environment.NewLine 
          + "------WebKitFormBoundarygWsJMIUcbjwBPfeL--" 
          + Environment.NewLine; 

      client.Headers.Add(HttpRequestHeader.ContentType, "multipart/form-data; boundary=----WebKitFormBoundarygWsJMIUcbjwBPfeL"); 

      client.UploadStringAsync(new Uri(ServerName + UriForPresetExecution), "POST", request); 

     } 

的問題是在client.Headers.Add方法......我不能爲時間弄清楚怎樣的HttpClient要我添加這些報頭的緣故。

+1

我知道。看到這個問題很多。 WebClient比HttpClient聰明得多。我通常使用像fiddler或wireshark這樣的嗅探器,並使用工作應用程序(如WebClient)捕獲http頭。然後將缺少的標題添加到我的HttpClient。 – jdweng

+0

我意識到這個關鍵字是「MultipartFormDataContent」,而不是「content-type」。但是我沒有找到適合你的UWP例子。 – kennyzx

+0

@kennyzx你幫了很多人。我認爲你的第二個答案有效......但是;我需要在清除標題之前清除標題。我不知道爲什麼,但我閱讀其他人有相同的問題,所以我試了一下,它的工作。轉發,我會編輯答案。使用(var httpClient = new HttpClient()) –

回答

1

請試試這個:

using System.Net.Http; 
using System.Net.Http.Headers; 

using (var httpClient = new HttpClient()) 
{ 
    var httpContent = new StringContent(request); 
    httpContent.Headers.Clear(); 
    httpContent.Headers.Add("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundarygWsJMIUcbjwBPfeL"); 
    var response = await httpClient.PostAsync(requestUri, httpContent); 
} 
+0

這沒有奏效。我得到了這個例外。一個方法在意想不到的時間被調用。 錯誤的標題名稱。確保請求標頭與HttpRequestMessage一起使用,使用HttpResponseMessage響應標頭,以及使用HttpContent對象的內容標頭。 –

+0

嗨,請嘗試替代。以前的答案是在Windows應用商店應用中工作的,我沒有用UWP進行測試。 – kennyzx

+0

不,現在我得到了 - 值'multipart/form-data; boundary = ---- WebKitFormBoundarygWsJMIUcbjwBPfeL'無效。我真的開始不喜歡HttpClient:/ –