将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要我添加这些报头的缘故。
请试试这个:
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);
}
这没有奏效。我得到了这个例外。一个方法在意想不到的时间被调用。 错误的标题名称。确保请求标头与HttpRequestMessage一起使用,使用HttpResponseMessage响应标头,以及使用HttpContent对象的内容标头。 –
嗨,请尝试替代。以前的答案是在Windows应用商店应用中工作的,我没有用UWP进行测试。 – kennyzx
不,现在我得到了 - 值'multipart/form-data; boundary = ---- WebKitFormBoundarygWsJMIUcbjwBPfeL'无效。我真的开始不喜欢HttpClient:/ –
我知道。看到这个问题很多。 WebClient比HttpClient聪明得多。我通常使用像fiddler或wireshark这样的嗅探器,并使用工作应用程序(如WebClient)捕获http头。然后将缺少的标题添加到我的HttpClient。 – jdweng
我意识到这个关键字是“MultipartFormDataContent”,而不是“content-type”。但是我没有找到适合你的UWP例子。 – kennyzx
@kennyzx你帮了很多人。我认为你的第二个答案有效......但是;我需要在清除标题之前清除标题。我不知道为什么,但我阅读其他人有相同的问题,所以我试了一下,它的工作。转发,我会编辑答案。使用(var httpClient = new HttpClient()) –