在C#应用程序和Web服务器之间传输数据

在C#应用程序和Web服务器之间传输数据,c#,webserver,C#,Webserver,在启动时,我的应用程序向web服务器发出一个简单的GET web请求。根据服务器的响应,应用程序可能需要向同一web服务器发送另一个请求,该请求必须包含一块html代码。问题是:我如何压缩/缩小响应(一些html代码)以减少带宽,而不需要任何第三方库为我的C#App解压接收到的数据。我只考虑过base64编码(它不是压缩数据),还有其他更有效的方法吗?为什么没有标准的gzip?算法在.net库中。好吧,您本来就在.net中。除此之外,您还可以使用来进行压缩。然后,总是会制定您自己的压缩方案。如果

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

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

好吧,您本来就在.net中。除此之外,您还可以使用来进行压缩。然后,总是会制定您自己的压缩方案。

如果服务器支持压缩数据,您可以要求服务器为您提供压缩数据:

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();
详情如下: