在C#App和Web Server之间传输数据

时间:2011-10-09 18:28:59

标签: c# webserver

一开始,我的应用程序向Web服务器发出一个简单的GET Web请求。根据服务器的响应,应用程序可能需要向同一个Web服务器发送另一个请求,该响应必须包含一个html代码块。问题是:如何压缩/缩小响应(一些HTML代码)以减少带宽,而不需要任何第三方库来为我的C#App解压缩收到的数据。我只讨论过base64编码(不压缩数据),还有更有效的方法吗?

3 个答案:

答案 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