Socket,HttpWebRequest,WebClient哪种方法下载网页的速度快 Socket,HttpWebRequest,WebClient哪种方法下载网页的速度快 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用: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; } kevery_net(負貳伍小時)可惜我已经结帖,不然分就给你了 找不到类型或命名空间"GZipInputStream" 向数据库中添加空值错误 不太懂的问题 Application.StarupPath+"\\Test.doc"??? c# GDI 里的Bitmap 串口通讯的迷惑 这样的SQL语句如何写,实在不知如何下手 C#操作Excel的问题 一个基础问题?定义一个会产生事件的变量,然后输入该事件的代码。 C#怎么遍历内嵌资源文件 C#编写的ActiveX在chrome上报该控件不受控制 命名空间问题 如何用C#+ibatis实现winform应用程序中的access数据库操作?希望这次有人能回答。谢谢了
再在提交前的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;
}