博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HttpWebRequest GetResponse操作超时
阅读量:5736 次
发布时间:2019-06-18

本文共 1385 字,大约阅读时间需要 4 分钟。

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

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

 //这个在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 = @"";

                    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

你可能感兴趣的文章
浅析信息化时代 医院混合云建设模式
查看>>
Gigamon针对AWS引入全面可视化平台
查看>>
DTCC2015议程曝光 最新嘉宾议题揭秘
查看>>
BAT、IBM、亚马逊、微软等一线互联网的区块链版图布局
查看>>
智能合约:开启一个新经济时代
查看>>
[翻译] JavaScript函数的6个基本术语
查看>>
vue静态资源打包中的坑与解决方案
查看>>
Lc 895. Maximum Frequency Stack 最大频率栈 JS
查看>>
j2ee分布式架构 dubbo + springmvc + mybatis + ehcache + redis 技术介绍
查看>>
Write Your Own Gemspec
查看>>
PlaNet,使用图像输入来学习世界模型
查看>>
Oracle 字符集的查看和修改【下】
查看>>
nginx + keepalive
查看>>
我的友情链接
查看>>
PHP json_encode() 函数介绍
查看>>
MyEclipse8.6 web中jsp页面出现jquery,dojo等代码自动提示
查看>>
js动态设置元素高度
查看>>
Ossim下的安全合规管理
查看>>
如何让一个linux命令后台运行,而不受终端影响
查看>>
DelphiWebMVC框架下BPL热部署实现
查看>>