一开始,我的应用程序向Web服务器发出一个简单的GET Web请求。根据服务器的响应,应用程序可能需要向同一个Web服务器发送另一个请求,该响应必须包含一个html代码块。问题是:如何压缩/缩小响应(一些HTML代码)以减少带宽,而不需要任何第三方库来为我的C#App解压缩收到的数据。我只讨论过base64编码(不压缩数据),还有更有效的方法吗?
答案 0 :(得分:2)
为什么不使用标准的gzip?算法在.net库中。
答案 1 :(得分:2)
嗯,原生你在.NET中有GZip compression。除此之外,您可以使用other libraries进行压缩。然后,总是编制自己的压缩方案。
答案 2 :(得分:1)
如果支持,您可以要求服务器为您提供压缩数据:
var req = (HttpWebRequest)WebRequest.Create("http://your.server/url");
req.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
var webResponse = (HttpWebResponse)req.GetResponse();
var responseStream = webResponse.GetResponseStream();
if (webResponse.ContentEncoding.Contains("gzip", StringComparison.OrdinalIgnoreCase))
{
responseStream = new GZipStream(responseStream, CompressionMode.Decompress);
}
else if (WebResponse.ContentEncoding.ToLower().Contains("deflate"))
{
responseStream = new DeflateStream(responseStream, CompressionMode.Decompress);
}
var reader = new StreamReader(responseStream, Encoding.Default);
string html = reader.ReadToEnd();
webResponse.Close();
responseStream.Close();
此处详细信息:http://www.west-wind.com/weblog/posts/2007/Jun/29/HttpWebRequest-and-GZip-Http-Responses