我的HttpWebRequest" POST"因为我升级到Microsoft.NETCore.UniversalWindowsPlatform的v5.2.2(在我使用v5.1.0之前)失败了

时间:2016-11-13 13:25:55

标签: c# post uwp httpwebrequest

我注意到了Microsoft.NETCore.UniversalWindowsPlatform的v5.2和5.1之间的某些内容

我在v5.1中有一个APP,并且做了一个" POST"操作HttpWebRequest,主体中的参数以UTF8编码。 (模拟webSite上的登录) 如果升级到v5.2,我的POST停止工作! 我恢复到v5.1,它再次工作! 你有什么想法吗?

mycode的

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlrest.AbsoluteUri); request.CookieContainer = new CookieContainer();
ASCIIEncoding encoding = new ASCIIEncoding();
//Encoding.UTF8.GetBytes(postString);
byte[] postData = Encoding.UTF8.GetBytes(allparaminbody); //allparamin_body contain : user=myuser&password=mypassword
request.ContentType = "POST";
request.Headers["User-Agent"] = "Apache-HttpClient/4.1.1 (java 1.5)";
Stream newStream = await request.GetRequestStreamAsync();
newStream.Write(postData, 0, postData.Length);
newStream.Dispose();
response = (HttpWebResponse)await request.GetResponseAsync();

由于

2 个答案:

答案 0 :(得分:0)

建议不要在UWP应用中使用

HttpWebRequest 。参考Demystifying HttpClient APIs in the Universal Windows Platform

  

作为通用Windows平台(UWP)应用程序开发人员,如果您尝试通过HTTP与Web服务或任何服务器端点进行通信,则可以选择多个API。在托管UWP应用中实现HTTP客户端角色的两个最常用和推荐的API是System.Net.Http.HttpClientWindows.Web.Http.HttpClient。这些API应该优先于较旧的,不鼓励使用的API,例如WebClient和HttpWebRequest (尽管UWP中有一小部分HttpWebRequest可用于向后兼容)。

另外,您可以参考my previous answer here。根据您的要求,您可以选择System.Net.Http.HttpClientWindows.Web.Http.HttpClient。这是GitHub上使用Windows.Web.Http命名空间的官方HttpClient sample

此外,HttpWebRequest.ContentType应该是MIME类型,例如x-www-form-urlencodedtext/htmlPOST我不是有效值。它应该是HttpWebRequest.Method Property的值。

答案 1 :(得分:0)

我联系了微软,v5.2中有一个BUG,他们会尽快纠正它。

=> https://github.com/dotnet/corefx/issues/9003

CDT