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

请求和响应头

POST的数据

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

 1    /// <summary>
 2         /// 获取请求信息(get方式)
 3         /// </summary>
 4         /// <param name="strUrl">请求的地址</param>
 5         /// <returns>请求的结果</returns>
 6         public static string HttpRequestByGet(string strUrl)
 7         {
 8             string html = "";
 9             //拼写请求主体地址
10             string RequestString = strUrl;
11
12             //生成请求对象
13             HttpWebRequest httprequestPost = (HttpWebRequest)WebRequest.Create(RequestString);
14
15             //设置请求对象属性
16             httprequestPost.Method = "get";
17             httprequestPost.ContentType = "application/Text/xml";
18             ////生成响应对象
19             HttpWebResponse res = (HttpWebResponse)httprequestPost.GetResponse();
20             ////读取返回数据流(编码格式UFT8)
21             Stream responseStream = null;
22             if ("gzip".Equals(res.ContentEncoding))
23             {
24                 responseStream = new System.IO.Compression.GZipStream(res.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
25             }
26             else if ("deflate".Equals(res.ContentEncoding))
27             {
28                 responseStream = new System.IO.Compression.DeflateStream(res.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
29             }
30             else
31             {
32                 responseStream = res.GetResponseStream();
33             }
34             if (responseStream != null)
35             {
36                 StreamReader streamReader = new StreamReader(responseStream, Encoding.GetEncoding(res.CharacterSet));
37                 html = streamReader.ReadToEnd().Trim();
38             }
39             //返回结果
40             return html;
41         }
时间: 2024-10-07 10:27:13

.NET自动识别HttpWebResponse的编码及是否压缩的相关文章

基于哈夫曼编码的文件压缩(c++版)

本博客由Rcchio原创 我了解到很多压缩文件的程序是基于哈夫曼编码来实现的,所以产生了自己用哈夫曼编码写一个压缩软件的想法,经过查阅资料和自己的思考,我用c++语言写出了该程序,并通过这篇文章来记录一下自己写该程序学到的东西.因为本人写的程序在压缩率上,还有提升的空间,所以本文将不定期更新,但程序整体的思路不会有较大的改动. 一.基于哈夫曼编码可实现压缩文件的原理分析 在计算机中,数据的存储都是二进制的,并且以字节作为基本的存储单位,像英文字母在文本中占一个字节,汉字占两个字节,我们把这种每一

用哈弗曼编码实现文件压缩和解压

放假了把这个改一下,发现确实用单字节压缩的压缩率要高一些,暂时没去管为什么,不过放假静下心来写的话确实效率高很多. 新版详见:http://blog.csdn.net/tookkke/article/details/50575103 今天脑洞大开突然想写一下,明明都要考试了,唉,怎么就管不住这手啊  总之呢,就是根据每种编码的出现频率把等长的编码换成变长的,据说理论上压缩比率是比较高的,可是为什么经检验我这个大部分时候压缩出来的比源文件还大呢? 哈弗曼编码的时候要先做一颗字典树,查找的时候就按照

Elias-Fano编码算法——倒排索引压缩用,本质上就是桶排序数据结构思路

Elias-Fano编码过程如下:把一组整数的最低l位连接在一起,同时把高位以严格单调增的排序划分为桶. Example: 2, 3, 5, 7, 11, 13, 24 Count in unary the size of upper bits "buckets" including empty ones:110=>计算最大的桶,此处是110,计算方法如下:Maximum bucket: [U / 2^l]Example: [24 / 2^2] = 6 = 110 连接最低位:

Huffman编码压缩算法之压缩与解压篇

今天的课程设计终于查完了,做了将近一周的Huffman也暂时告一段落了.其间用到了压缩,又开拓了眼界,又认识了一个头文件<bitset>,那我们接下来就小结一下用到的压缩方法. 压缩: while(str.size() >= 8){ string str2(str, 0, 8); //从str中读取前8位 bitset<8> foo(str2); //截取前8位 char bigch = (char)foo.to_ulong(); //将foo转成无符号长整型unsigned

项目实战——基于LZ77变形和哈夫曼编码的GZIP压缩

文件压缩: 日常生活中有很多压缩的例子,比如给很长的名字取一个缩写--西安交通大学简称西交大,这样就给我们的生活提供了很大的便捷,那么什么又是文件压缩呢?文件压缩就是将文件通过一些方法变得更小,解压缩就是将文件还原,文件压缩将文件变得更小节省了内存,并且在网络上传输起来也变得很快,还具有一定的保密性,所以这个项目就是为了实现这个目的. 基于哈夫曼树的文件压缩 一.思想:众所周知在32位平台下一个字节占八个bit位,假如我们文件中的数据是abbbcccccddddddd时,每个字节占用八个比特位,

【13】MD5编码、Zlib压缩解压缩

1.MD5加密 1 /// <summary> 2 /// 使用MD5加密算法 3 /// </summary> 4 /// <param name="md5MessageStr">需要加密的字符串</param> 5 /// <returns>加密后返回字符串</returns> 6 public static string GetMD5String(string md5MessageStr) 7 { 8 usi

【0day shellcode编写艺术】—— jmp esp、动态获取api。后续:编码、压缩

此次主要徒手体会了一下编写shellcode 的不容易.当真不容易,看着作者的代码,都感觉自己无处可以下手了. 需要的底层原理知识也还挺多需要补充上去的. 打算后期再逐渐补充.目前阶段将jmp esp弄懂了.后面动态获取api在主机上出错了.问题和搜索jmp esp代码时候貌似一样,产生访问越权的问题.后期再继续解决吧. 目前整理一下整个的思路. 1.shellcode.expoit的概念: 2.为了更好的注入shellcode,里程碑式的方法.使用jmp esp. 3.后续:动态获取api.编

基于哈夫曼编码的压缩解压程序

这个程序是研一上学期的课程大作业.当时,跨专业的我只有一点 C 语言和数据结构基础,为此,我查阅了不少资料,再加上自己的思考和分析,实现后不断调试.测试和完善,耗时一周左右,在 2012/11/19 完成.虽然这是一个很小的程序,但却是我完成的第一个程序. 源码托管在 Github:点此打开链接 一.问题描述: 名称:基于哈夫曼编码的文件压缩解压 目的:利用哈夫曼编码压缩存储文件,节省空间 输入:任何格式的文件(压缩)或压缩文件(解压) 输出:压缩文件或解压后的原文件 功能:利用哈夫曼编码压缩解

转 常见视频编码方式以及封装格式

常见视频编码方式以及封装格式 常见视频编码方式 所谓视频编码方式就是指通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式文件的方式.视频流传输中最为重要的编解码标准有国际电联的H.261.H.263.H.264.H.265,运动静止图像专家组的M-JPEG和国际标准化组织运动图像专家组的MPEG系列标准,此外在互联网上被广泛应用的还有Real-Networks的RealVideo.微软公司的WMV以及Apple公司的QuickTime等. AVI AVI 是 Audio Video I