HttpWebRequest请求超时的错误
2009-06-10 01:18
190 查看
从网上抓取点数据,其间要创建两个HttpWebRequest,第一个请求发送成功后,将服务端返回的Cookie记录下来给第二个HttpWebRequest使用.代码敲完了就执行吧,但请求到20次左右,总是会出现"请求超时"的错误,找了N久也没找到问题在哪里.
开始,我以为是服务端限制了请求数量,于是,找了些代理IP,每个HttpWebRequest分配一个WebProxy,但是问题依然存在,于是我把Timeout属性改到5000ms,然后再Catch,在Catch中再设置一个失败的标识,Catch完后如果发现标识为失败,则继续发送请求,直到请求成功为止,执行了N长时间,还是在20次左右卡住了,程序一直在不停的try,catch,仍然没有往下继续的意思.
没办法,网上搜了一下,没找到对应的数据,后来在园子里一个朋友不太相关的文章中找到了答案,一看,似乎以前就碰到过这个问题,唉,记性不好了,还是记下来吧,免得下次碰到又满世界的去找.
其实没有什么大问题,问题就是我第一个HttpWebRequest在GetResponse之后,忘记将取得的WebResponse.Close掉.原来这个Close还负责释放资源啊...
改改代码,加了一行代码,将WebResponse.Close掉后,一切恢复正常.
(单线程的情况下,关闭掉WebResponse就可以了,多线程的情况下似乎要设置一下WebRequest.ServicePoint.ConnectionLimit属性)
顺便记一下:HttpWebRequest有个AllowAutoRedirect,可以设置是否允许服务端Redirect,默认为true,特殊情况下需要设置为false.
比京东还便宜的手机卖场
需要化妆品/护肤品的朋友可以看看这里
开始,我以为是服务端限制了请求数量,于是,找了些代理IP,每个HttpWebRequest分配一个WebProxy,但是问题依然存在,于是我把Timeout属性改到5000ms,然后再Catch,在Catch中再设置一个失败的标识,Catch完后如果发现标识为失败,则继续发送请求,直到请求成功为止,执行了N长时间,还是在20次左右卡住了,程序一直在不停的try,catch,仍然没有往下继续的意思.
没办法,网上搜了一下,没找到对应的数据,后来在园子里一个朋友不太相关的文章中找到了答案,一看,似乎以前就碰到过这个问题,唉,记性不好了,还是记下来吧,免得下次碰到又满世界的去找.
其实没有什么大问题,问题就是我第一个HttpWebRequest在GetResponse之后,忘记将取得的WebResponse.Close掉.原来这个Close还负责释放资源啊...
改改代码,加了一行代码,将WebResponse.Close掉后,一切恢复正常.
(单线程的情况下,关闭掉WebResponse就可以了,多线程的情况下似乎要设置一下WebRequest.ServicePoint.ConnectionLimit属性)
顺便记一下:HttpWebRequest有个AllowAutoRedirect,可以设置是否允许服务端Redirect,默认为true,特殊情况下需要设置为false.
比京东还便宜的手机卖场
需要化妆品/护肤品的朋友可以看看这里
相关文章推荐
- HttpWebRequest请求超时的错误
- HttpWebRequest多线程性能问题,请求超时的错误
- 用HttpWebRequest做POST请求时返回Http 417 错误解决方法
- 用HttpWebRequest做POST请求时返回Http 417 错误解决方法
- (微信API接口开发) 使用HttpWebRequest进行请求时发生错误:基础连接已关闭,发送时发生错误处理
- httpWebRequest请求错误,基础连接已经关闭: 连接被意外关闭
- Microsoft JScript 运行时错误: Sys.WebForms.PageRequestManagerTimeoutException: 服务器请求超时。
- 解决HttpWebRequest写入数据“操作超时”错误
- httpWebRequest请求错误,基础连接已经关闭: 连接被意外关闭
- HttpWebRequest请求超时异常的处理方法(重新发送请求到成功为止)
- Microsoft JScript 运行时错误: Sys.WebForms.PageRequestManagerTimeoutException: 服务器请求超时。
- 【转】System.Net.HttpWebRequest请求超时的问题解决方法
- HttpWebRequest的偶尔请求超时问题研究
- C# HttpWebRequest第一次请求很慢超时的原因
- HTTP 408 错误 – 请求超时 (Request timeout)
- HttpWebRequest请求超时的解决方案!
- 使用HttpWebRequest进行请求时发生错误:基础连接已关闭,发送时发生错误处理
- HttpWebRequest请求返回非200的时候 HttpWebResponse怎么接受返回错误提示
- C#利用HttpWebRequest后台请求,出现:基础连接已经关闭: 接收时发生错误;【解决方法之一】