将WebClient转换为HttpClient

问题描述:

我一直在冲浪和工作几个小时,现在我读了扔我的电脑。将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()) –

请试试这个:

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:/ –