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秒,百思不得其解,我也尝试了用异步,结果完全一样,没办法,求教~

解决方案 »

  1.   

    估计是压缩的问题,你给出URL测试一下
      

  2.   

    URL是前面提交几批数据后才有的地址,没有参考价值,到ReadToEnd那里只是花的时间比IE多的多,返回的结果还是正确的,无错误报告,网上找了几天,中文数据有个把类似的问题也是没有解决的,英文的有一些,不过也没有找到解决办法难道真这么难,不应该啊,不就是post个数据么.另,不是压缩的问题,加不加都一样。
      

  3.   

    HttpWebRequest使用完,request要记得释放,加上request.Abort();就可以了
      

  4.   

    换webClient试试
    WebClient wc = new WebClient();
    str = wc.DownloadString(url);
      

  5.   

    o也遇到了这个情况,没解决,ie火狐提交就1秒反应时间,我的比你的还慢要1分钟反应时间
      

  6.   

    我的也会有这样的问题
    有时候在reader.ReadToEnd()上面也会费很长时间
      

  7.   

    http://blog.csdn.net/rrrfff/article/details/6170653?reload