HttpWebResponse response = (HttpWebResponse)request.GetResponse();就是这里了,我设置超时时间是2分钟都不行,有时候网速真的很差。。请问怎么改改让他超时后重新连呢???谢谢

解决方案 »

  1.   

    这个我一般都是捕获异常了再继续连接的
    lz可以在try{}catch()中写代码判断
    另外还可以设置个标记判断重新连接的几次
    可以在超过几次后就不再连接了
      

  2.   

                for(int i; i < 99; i++)
                {
                    try
                    {
                        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                        break;
                    }
                    catch
                    {
                    }
                }我这样用不对,response这个东西就变成这个for循环内用的变量了。。该怎么做呢?
      

  3.   

    有大侠给过我这个重写的代码,但是仍旧是那个问题,那个response的变量作用范围还是不对。。            HttpWebResponse GetResponse()
                {
                    try
                    {
                        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                        return response;
                    }
                    catch
                    {
                        return GetResponse();
                    }
                }
      

  4.   

    设置超时时间不管用是一个bug,微软号称要改的...
      

  5.   

                    try
                    {
                        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                    }
                    catch
                    {
                        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                    }
    要是只用这个,就只能重新再来一次吧,怎么能不停的异常就重试呢???
      

  6.   

    //连接的方法
    public void Connect(bool flag,int count)
    {
       while(!flag)
       {
         if(count>4)//连接次数小于4次
         {
            return;  
         }
         else
         {
              try
             {
             HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
              flag = true;
             }
             catch
             {
                Connect(flag,count++)
             }       
         }
       }
    }大致就上面这个样子,需要楼主去调试下,或者稍做修改
      

  7.   

    这样的话,那个respon的作用范围不就是仅限于Connect这个函数内了么???还有那个request实例,没有传递呀??不太懂。
      

  8.   

    修改一下 嘿嘿            HttpWebResponse GetResponse(HttpWebResponse response)
                {
                    try
                    {
                        response = (HttpWebResponse)request.GetResponse();
                        return response;
                    }
                    catch
                    {
                        return GetResponse(response);
                    }
                }
      

  9.   

    我自己修改了一下,大家帮看看:
            private HttpWebResponse Connect(bool flag, HttpWebRequest rq)
            {
                while(!flag)
                {
                    try
                    {
                        HttpWebResponse rp = (HttpWebResponse)rq.GetResponse();
                        flag = true;
                        return rp;
                    }
                    catch
                    {
                        Connect(flag, rq);
                    }
                }
            }提示错误:
    “CC.XiaoNeiLogin.Connect(bool, System.Net.HttpWebRequest)”: 并非所有的代码路径都返回值
      

  10.   


    需要return Connect(flag, rq);才行。
      

  11.   

            private HttpWebResponse Connect(bool flag, HttpWebRequest rq)
            {
                while(!flag)
                {
                    try
                    {
                        HttpWebResponse rp = (HttpWebResponse)rq.GetResponse();
                        flag = true;
                        return rp;
                    }
                    catch
                    {
                        return Connect(flag, rq);
                    }
                }
                return Connect(flag, rq);
            }
    然后我在类的其他方法里面这样用:
    HttpWebResponse response = this.Connect(false, request);大家帮我看下这样对了吧,帮我挑挑问题呀,或者有更好的写法告诉我一下,谢谢了
      

  12.   

    //没有设置代理的:
              #region Proxy
                //获取IE缺省设置
                WebProxy proxy = WebProxy.GetDefaultProxy();
                //如果缺省设置为空,则有可能是根本不需要代理服务器,如果此时配置文件中也未配置则认为不需Proxy
                if (proxy.Address == null)
                    proxy.Address = new Uri("192.168.8.108:8080");//按配置文件创建Proxy 地置            //request.Credentials = CredentialCache.DefaultNetworkCredentials;
                request.Proxy = proxy;            #endregion