当前位置: 代码迷 >> C# >> HttpWebResponse response 调试时,程序也不报错,乃是不往下走了
  详细解决方案

HttpWebResponse response 调试时,程序也不报错,乃是不往下走了

热度:93   发布时间:2016-05-05 04:09:51.0
HttpWebResponse response 调试时,程序也不报错,就是不往下走了
 System.Net.HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                    // 可以将 Method 属性设置为任何 HTTP 1.1 协议谓词:GET、HEAD、POST、PUT、DELETE、TRACE 或 OPTIONS。
                    request.Method = "POST";
                    request.ContentType = "application/json";
                    System.IO.Stream dataStream = request.GetRequestStream();
                    System.Net.HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                    dataStream = response.GetResponseStream();
                    System.IO.StreamReader reader = new System.IO.StreamReader(dataStream, Encoding.UTF8);
                    string responseFromServer = reader.ReadToEnd();
                    reader.Close();
                    reader.Dispose();
                    dataStream.Close();
                    dataStream.Dispose();
                    response.Close();

------解决思路----------------------
ReadToEnd是阻塞的,服务器一直不返回所以就不走了
------解决思路----------------------
GetResponse这个方法也是
------解决思路----------------------
等上一段时间就可以了,要么timeout,要么返回数据
------解决思路----------------------
根据msdn的解释
ReadToEnd 假定流在到达末尾时会知道已到达末尾。对于交互式协议(服务器仅当被请求时才发送数据而且不关闭连接),ReadToEnd 可能被无限期阻止,应避免出现这种情况。


1、是不是服务器一直无响应?
2、是不是相应内容超级长,流一直处于度的状态?

3、我目测你的
request.Method = "POST";
应该改成
request.Method = "GET";

------解决思路----------------------
引用:
Get 我试了 也是报错 ,同时添加了 request.Timeout = 30000;  request.KeepAlive = true; 问题依旧。我是用来获取数据中某一列的值,会不会和我请求太频繁有关系,跑了一万多条数据还没有事,突然就操作超时了,服务器上没有任何的连接数限制和请求限制,大神们,帮帮忙吧

TimeOut设的小一点

突然就超时了,你指的是什么突然就超时了?
  相关解决方案