.NET自动识别HttpWebResponse的编码及是否压缩

by 好大一小白 2011.9.8 15:18

最近项目使用HttpWebRequest请求网页,处理HttpWebResponse返回消息体,发现网页可能是有GZIP压缩等,所得数据乱码,所以相处了解决方案,大家共同学习。
这里是GET方式,POST方式的响应数据基本一样处理即可。
代码:

 /// <summary>
        /// 获取请求信息(get方式)
        /// </summary>
        /// <param name="strUrl">请求的地址</param>
        /// <returns>请求的结果</returns>
        public static string HttpRequestByGet(string strUrl)
        {
            string html = "";
            //拼写请求主体地址
            string RequestString = strUrl;

            //生成请求对象
            HttpWebRequest httprequestPost = (HttpWebRequest)WebRequest.Create(RequestString);

            //设置请求对象属性
            httprequestPost.Method = "get";
            httprequestPost.ContentType = "application/Text/xml";
            ////生成响应对象
            HttpWebResponse res = (HttpWebResponse)httprequestPost.GetResponse();
            ////读取返回数据流(编码格式UFT8)
            Stream responseStream = null;
            if ("gzip".Equals(res.ContentEncoding))
            {
                responseStream = new System.IO.Compression.GZipStream(res.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
            }
            else if ("deflate".Equals(res.ContentEncoding))
            {
                responseStream = new System.IO.Compression.DeflateStream(res.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
            }
            else
            {
                responseStream = res.GetResponseStream();
            }
            if (responseStream != null)
            {
                StreamReader streamReader = new StreamReader(responseStream, Encoding.GetEncoding(res.CharacterSet));
                html = streamReader.ReadToEnd().Trim();
            }
            //返回结果
            return html;
        }

Tags: , ,

WEB开发 | ASP.NET | 服务器 | Windows Phone 7

不允许评论

微信赞

本站统计

36 篇文章
5 个单页
12 条评论
12 次评分
1292132 次访问
访问统计开始于 2010年4月24日
平均日访问 222 次
当前 3 人在线

声明

本博所有网友评论不代表本博立场,版权归其作者所有。 
苏ICP备09004001号
Powered by BlogYi.net  edit by 1wanweb.com
© Copyright 2008-2017