2011-10-09 62 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

相關問題