zoukankan      html  css  js  c++  java
  • HttpWebRequest请求超时的错误

            从网上抓取点数据,其间要创建两个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.

           京东便宜的手机卖场

           需要化妆品/护肤品的朋友可以看看这里

  • 相关阅读:
    node generator 模仿co
    node-webkit 屏幕截图功能
    linux命令, cut,sort,wc,uniq,tee 说明
    linux命令,vim,vi 说明
    linux命令,tar,configure,make,make install,su 说明
    java高级工程师学习方向
    oracle: Rownum原理
    Win7 环境weblogic用户名和密码忘记解决方法
    struts原理介绍,面试
    JSP、servlet--学习摘要
  • 原文地址:https://www.cnblogs.com/robot/p/1500085.html
Copyright © 2011-2022 走看看