在Windows Phone上下文中使用“GZipSteram”和“HttpWebRequest”

本文关键字:GZipSteram HttpWebRequest Windows Phone 上下文 | 更新日期: 2023-09-27 18:32:16

我有这段代码在WindowsForm应用程序中运行良好,但我需要在Windows Phone 7.1应用程序中重新使用确切(或类似)的代码。

HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(textBoxUrl.Text);
req.UserAgent = "MOZILLA/5.0 (WINDOWS NT 6.1; WOW64) APPLEWEBKIT/537.1 (KHTML, LIKE GECKO) CHROME/21.0.1180.75 SAFARI/537.1";
req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
req.Headers.Add("Accept-Encoding", "gzip,deflate");
GZipStream zip = new GZipStream(req.GetResponse().GetResponseStream(),
                                                      CompressionMode.Decompress);
var reader = new StreamReader(zip);
var page = reader.ReadToEnd();

当我将此代码移动到Windows Phone时,没有GZipStream。此外,HttpWebRequest.Headers在Windows Phone环境中没有Add方法。有人可以告诉我这个问题的解决方法吗?

在Windows Phone上下文中使用“GZipSteram”和“HttpWebRequest”

你确实应该使用NuGet的Microsoft.Net.Http,NuGet是Microsoft的可移植类库,它将HttpClient方法从.NET 4.5带到框架的所有当前版本,并包括GZIP和DEFLATE支持。

这也意味着,无论您的目标是什么平台,您尝试完成的函数的所有代码都将保持不变。

我还应该指出,当流实际编码为 GZIP 时,您使用的代码将起作用,但如果流未压缩,则不起作用。这就是你应该使用HttpClient的更多原因。