网络返回解析 response.characterset iso-8859-1 gzip 解压

来源:互联网 发布:度小月担仔面 知乎 编辑:程序博客网 时间:2024/06/06 17:03
  
  最近解析网页 发现网络返回解析  response.characterset iso-8859-1 gzip 解压 报错 自己记录下 .
  不要采用 :   StreamReader reader = new StreamReader(response_stream, Encoding.GetEncoding("gb2312"));
   解压gzip流会报错:System.ArgumentException:“流不可读。”
      
   正确方法:
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();            Stream response_stream = response.GetResponseStream();            int count = (int)response.ContentLength;            int offset = 0;            byte[] buf = new byte[count];            while (count > 0)  //读取返回数据            {                int n = response_stream.Read(buf, offset, count);                if (n == 0) break;                count -= n;                offset += n;            }            request_stream.Close();            response.Close();                System.IO.StringReader srr=DeCompress(buf);            string srcString1 = srr.ReadToEnd();
        ///转压缩的Byte 
        public System.IO.StringReader DeCompress(byte[] str)        {            System.IO.MemoryStream stream = new System.IO.MemoryStream();            stream.Write(str, 0, str.Length);            stream.Position = 0;            GZipStream zip = new GZipStream(stream, CompressionMode.Decompress);            System.IO.StreamReader rd = new System.IO.StreamReader(zip);            return new System.IO.StringReader(rd.ReadToEnd());        }
   


原创粉丝点击