当前位置:编程学习 > C#/ASP.NET >>

困扰了我很多天的问题,在线等,今天一定要解决。谢谢大家!

string strResult 
                System.Text.Encoding encoding = System.Text.Encoding.GetEncoding("UTF-8");
                HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
                webRequest.Method = "GET";
                webRequest.UserAgent = "Opera/9.25 (Windows NT 6.0; U; en)";
                HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
                using (System.IO.Stream stream = webResponse.GetResponseStream())
                {
                    using (System.IO.StreamReader reader = new StreamReader(stream, encoding))
                    {
                        strResult = reader.ReadToEnd();
                    }
                }
                webResponse.Close();
循环执行这段代码的时候 会出现 strResult = reader.ReadToEnd(); 这段代码提示《操作已超时。》
谁能告诉我下怎么改 

--------------------编程问答-------------------- 网络流文件最好不要用reader.ReadToEnd(),因为网络上读取数据速度慢,还不可靠,读取不完数据是正常的,你需要处理读取不完的情况,

最好是分多次读取,每次读取一部分数据然后放到缓冲区,读取完之后Sleep一段时间,如果读取不完,做异常处理, --------------------编程问答-------------------- HttpWebResponse  HttpWebRequest  是这两个超时  和 ReadToend 没关系吧??? --------------------编程问答-------------------- 当然有关系,下面这句话把服务器的HTTP应答当做一个流来处理,你readtoend实际上是想一次性把服务器返回的应答文本都读取到字符串中,

System.IO.Stream stream = webResponse.GetResponseStream()

readtoend的时候其实是在通过tcp/ip协议从网络上读取数据,如果网络速度慢或者不通畅,就会超时, --------------------编程问答--------------------
引用 3 楼 stonespace 的回复:
当然有关系,下面这句话把服务器的HTTP应答当做一个流来处理,你readtoend实际上是想一次性把服务器返回的应答文本都读取到字符串中,

System.IO.Stream stream = webResponse.GetResponseStream()

readtoend的时候其实是在通过tcp/ip协议从网络上读取数据,如果网络速度慢或者不通畅,就会超时,

++
学习了 --------------------编程问答-------------------- 代码没有错
超时是无法取得所要的资料,这都是正常的
个人建议,把你的循环包在一个 try catch 裹
如果发生超时的行为,就忽略,等待下一个 loop 再执行
应该是这样子吧~
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,