为什么即使长时间发送HTTPWebRequest,HTTPWebRespnse也需要更长的时间?

时间:2012-04-01 17:34:39

标签: c# .net httpwebrequest httpwebresponse

Hola检查此代码。

     var watch = new Stopwatch();
     watch.Start();
     var request = HttpWebRequest.Create(new Uri("http://localhost:59449/stwebapi/chat?userId=john")) as HttpWebRequest;
     Console.WriteLine(watch.Elapsed);

     Thread.Sleep(5000);

     watch.Restart();
     var response = request.GetResponse();
     Console.WriteLine(watch.Elapsed);

我发了网页请求,等了很久,然后得到了回复。仍然需要更长时间才能执行。我得到的结果是

00:00:00.1142339
00:00:03.1365544

为什么回应花了我3秒钟? 异步响应存在相同的响应延迟。

我希望立即执行GetResponse函数。我怎样才能做到这一点?

感谢。

1 个答案:

答案 0 :(得分:4)

我强烈怀疑,在您致电GetResponse之前,请求甚至都没有发送...所以您的Thread.Sleep基本上对您没有任何好处。

为什么不立即致电GetResponse?如果需要3秒钟,那么可能是网络服务器用了多长时间来回答您的请求......

(顺便说一下,你应该使用using语句来确保你处理WebResponse;否则你最终会因为连接池等待连接而超时请求变得可用。)