HttpWebRequest GetResponse操作超时

最近在做并发测试,用到了多线程去请求server,发现请求的数据太大时会有不少线程抛出操作超时的异常。通过增加一bool变量判断是否超时,如果超时则继续等待,否则返回结果。代码如下,超时的问题暂时解决,但没有分析这样是否足够合理,目前还在测试中...

 wenanry说可以加上如下一段代码,感觉和我下面写的效果应该是一样的。

 //这个在Post的时候,一定要加上,如果服务器返回错误,他还会继续再去请求,不会使用之前的错误数据,做返回数据
  HttpWebRequest .ServicePoint.Expect100Continue = false;

 private long RequestMethod(string strParameters)
        {
            long nRet = 0;
            bool bTimeOut = true;
            while (bTimeOut)
            {
                try
                {
                    System.Text.Encoding GB2312 = System.Text.Encoding.GetEncoding("GB2312");
                    byte[] szByte = GB2312.GetBytes(strParameters);
                    string strUri = @"http://192.168.1.1/XXX.Interface/InterfaceProvider.ashx";

                    HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(strUri);
                    httpWebRequest.ContentType = "application/x-www-form-urlencoded";
                    httpWebRequest.ContentLength = szByte.Length;
                    httpWebRequest.Method = "POST";

                    using (Stream reqStream = httpWebRequest.GetRequestStream())
                    {
                        reqStream.Write(szByte, 0, szByte.Length);
                    }

                    using (WebResponse wr = httpWebRequest.GetResponse())
                    {
                        //在这里对接收到的页面内容进行处理
                        Stream responseStream = wr.GetResponseStream();
                        StreamReader responseReader = new StreamReader(responseStream);
                        string strRet = responseReader.ReadToEnd();
                        nRet = wr.ContentLength;
                    }
                    bTimeOut = false;
                }
                catch (WebException ex)
                {

       HttpStatusCode status = ((HttpWebResponse)ex.Response).StatusCode;
                    if (status == HttpStatusCode.RequestTimeout)
                    {
                        Thread.Sleeps(1000);
                    }
                }
            }
          
            return nRet;
        }

转载于:https://www.cnblogs.com/Kakasi/archive/2011/08/10/2133900.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值