Socket,HttpWebRequest,WebClient哪种方法下载网页的速度快

解决方案 »

  1.   

    用:HttpWebRequest
    再在提交前的HttpWebRequest对像中的头加入("Accept-Encoding", "gzip");
    这样会更快.但返回的数据是已加密的.再在本地解密,就OK,且本地解密也是很快的嘛.
    如://下载网页
    private string GetData (string 要下载的网址, string 当前网址)
    {
    string text1 = "";
    string name = "gb2312";
    name = "Big5";
    try

    HttpWebRequest HWR = (HttpWebRequest) WebRequest.Create(要下载的网址);
    HWR.Timeout = 20;
    HWR.ReadWriteTimeout = 30;
    HWR.UserAgent = "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322)";
    HWR.Accept = "*/*";
    HWR.KeepAlive = true;
    HWR.Headers.Add("Accept-Language", "zh-cn,en-us;q=0.5");
    HWR.Headers.Add("Accept-Encoding", "gzip, deflate");
    HWR.Referer = 当前网址;
    HWR.CookieContainer = New CookieContainer();
    HttpWebResponse HWResp = (HttpWebResponse) HWR.GetResponse();
    Stream stream1 = Gzip(HWResp); 
    StreamReader reader1 = new StreamReader(stream1, Encoding.GetEncoding(name));
    text1 = reader1.ReadToEnd();
    reader1.Close();
    stream1.Close();
    }
    catch
    {
    text1="";
    }
    return text1;
    }//解密
    private Stream Gzip (HttpWebResponse HWResp)
    {
    Stream stream1 = null;
    if (HWResp.ContentEncoding == "gzip")
    {
    stream1 = new GZipInputStream(HWResp.GetResponseStream());
    }
    else
    {
    if (HWResp.ContentEncoding == "deflate")
    {
    stream1 = new InflaterInputStream(HWResp.GetResponseStream());
    }
    }
    if (stream1 == null)
    {
    return HWResp.GetResponseStream();
    }
    MemoryStream stream2 = new MemoryStream();
    int count = 0x800;
    byte[] buffer = new byte[0x800];
    goto A;
    A:
    count = stream1.Read(buffer, 0, count);
    if (count > 0)
    {
    stream2.Write(buffer, 0, count);
    goto A;
    }
    stream2.Seek((long) 0, SeekOrigin.Begin);
    return stream2;
    }
      

  2.   

    kevery_net(負貳伍小時)可惜我已经结帖,不然分就给你了
      

  3.   

    找不到类型或命名空间"GZipInputStream"