首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

请求HttpWebRequest中读取数据超慢等有关问题

2013-04-20 
请求HttpWebRequest中读取数据超慢等问题byte[] postData Encoding.ASCII.GetBytes(parameters)System.

请求HttpWebRequest中读取数据超慢等问题

     byte[] postData = Encoding.ASCII.GetBytes(parameters);
            System.Net.HttpWebRequest request = System.Net.WebRequest.Create(url) as System.Net.HttpWebRequest;
            request.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
            request.Headers.Add("Accept-Language", "zh-cn,en-us;q=0.5");
            request.Headers.Add("Accept-Encoding", "gzip, deflate");
            request.CookieContainer = cookieContainer;
            request.ContentLength = postData.Length;
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)";

 System.IO.Stream outputStream = request.GetRequestStream();
            outputStream.Write(postData, 0, postData.Length);
            outputStream.Close();
            System.Net.HttpWebResponse response = request.GetResponse() as System.Net.HttpWebResponse;

 System.IO.Stream readStream = response.GetResponseStream();
            string responseText = "";
            try
            {
                if (response.ContentEncoding.ToLower().Contains("gzip"))
                    readStream = new GZipStream(readStream, CompressionMode.Decompress);
                else if (response.ContentEncoding.ToLower().Contains("deflate"))
                    readStream = new DeflateStream(readStream, CompressionMode.Decompress);

                System.IO.StreamReader reader = new System.IO.StreamReader(readStream, Encoding);
                responseText = reader.ReadToEnd();
            }
            finally
            {
                if (readStream != null) readStream.Close();


                if (response != null) response.Close();
                if (request != null) request.Abort();
            }


差不多是上面的代码,采集其它网页全部正常,但唯一有时Post一个请求时,在reader.ReadToEnd();这行会耗去20秒左右的时间,但是用IE提交请求却是正常,不到1秒,我试着把reader.ReadToEnd去掉,发现却又在readStream.Close这行会耗去20秒,百思不得其解,我也尝试了用异步,结果完全一样,没办法,求教~

[解决办法]
估计是压缩的问题,你给出URL测试一下
[解决办法]
可以建立索引试试
[解决办法]
错误报告是什么
[解决办法]
换webClient试试
WebClient wc = new WebClient();
str = wc.DownloadString(url);
[解决办法]
人家网站就很慢,你奈何不了

热点排行