zoukankan      html  css  js  c++  java
  • C#使用Gzip解压缩完整读取网页内容

    using System;
    using System.Threading;
    using System.Text;
    using System.Text.RegularExpressions;
    using System.IO.Compression;
    using System.IO;
    using System.Web;
    using System.Net;
     
    class Test
    {
        static void Main()
        {
            string url = "http://www.cnblogs.com/waw/";
            getHtml1(url);
            getHtml2(url);
            Console.ReadKey();
        }
     
        private static void getHtml1(string url)
        {
            StringBuilder s = new StringBuilder(102400);
            WebClient wr = new WebClient();
            wr.Headers[HttpRequestHeader.AcceptEncoding] = "gzip, deflate";
            byte[] buffer = wr.DownloadData(url);
            GZipStream g = new GZipStream((Stream)(new MemoryStream(buffer)), CompressionMode.Decompress);
            byte[] d = new byte[20480];
            int l = g.Read(d, 0, 20480);
            while (l > 0)
            {
                s.Append(Encoding.Default.GetString(d, 0, l));
                l = g.Read(d, 0, 20480);
            }
            Console.Write(s.ToString() + "/n/n/n" + s.Length);
     
        }
     
        private static void getHtml2(string url)
        {
            StringBuilder s = new StringBuilder(102400);
            HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url);
            wr.Headers[HttpRequestHeader.AcceptEncoding] = "gzip, deflate";
            HttpWebResponse response = (HttpWebResponse)wr.GetResponse();
            head(response);
            GZipStream g = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress);
            byte[] d = new byte[20480];
            int l = g.Read(d, 0, 20480);
            while (l > 0)
            {
                s.Append(Encoding.Default.GetString(d, 0, l));
                l = g.Read(d, 0, 20480);
            }
            Console.Write(s.ToString() + "/n/n/n" + s.Length);
        }
     
        private static void head(HttpWebResponse r)
        {
            string[] keys = r.Headers.AllKeys;
            for (int i = 0; i < keys.Length; ++i)
            {
                Console.WriteLine(keys[i] + "   " + r.Headers[keys[i]]);
            }
        }
    }
  • 相关阅读:
    剑指offer--2.替换空格
    剑指offer--1.二维数组中的查找
    poj-1426-Find The Multiple(打表水过)
    hdoj-3791-二叉搜索树(二叉搜索树模板题)
    hdoj-1276-士兵队列训练问题(队列模拟)
    HihoCoder
    CodeForces-831A-Unimodal Array (水题)
    hdoj-1046-Gridland(规律题)
    hdoj-1038-Biker's Trip Odometer(水题)
    hdoj-1037-Keep on Truckin'(水题)
  • 原文地址:https://www.cnblogs.com/waw/p/3245284.html
Copyright © 2011-2022 走看看