2011-10-09 97 views
2

开始时,我的应用程序向Web服务器发出一个简单的GET请求。根据服务器的响应,应用程序可能需要向同一个Web服务器发送另一个请求,该响应必须包含一段html代码。问题是:如何压缩/缩小响应(一些html代码)以减少带宽,而不需要任何第三方库供我的C#应用​​程序解压缩接收到的数据。我只用了base64编码(这不是压缩数据),还有更多有效的方法吗?在C#应用程序和Web服务器之间传输数据

回答

2

那么,本质上你有在.NET中GZip compression。除此之外,您可以使用other libraries来进行压缩。然后,总是制定你自己的压缩方案。

2

为什么不是标准的gzip?算法在.net库中。

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

相关问题