为什么此代码无法检测页面更新?

时间:2013-04-17 00:48:08

标签: c# http-headers httpwebresponse

这个问题几乎可以解释它。我知道在String.equals期间代码非常脏,但我只是想看看我是否理解了标题响应。显然我没有,因为我在浏览器中观看并且添加了新问题时,我的程序从不输出“是的,它改变了”为什么会这样?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.IO;
using System.Net;

namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {

            Uri myUri = new Uri("http://stackoverflow.com/questions?sort=newest");

            HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(myUri);



            HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
            string org = myHttpWebResponse.Headers.GetValues("Date")[0];
            string newone = "";

            while (true) //STRICTING FOR TESTING. THIS WOULD BE A Dos ATTACK AS IT NEVER HAS A DELAY BETWEEN REQUESTS.
            {

                myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
                newone = myHttpWebResponse.Headers.GetValues("Date")[0];

                if (!newone.Equals(org))
                    break;
            }


            Console.WriteLine("Yep it changed");
            Console.ReadLine();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您的代码一遍又一遍地检查相同的HttpWebResponse。它没有提出新的请求,只关注第一个(也是唯一的请求)的响应。

来自MSDN

  

对GetResponse的多次调用返回相同的响应对象;请求不会重新发布。

您必须将所有发出请求的代码放入循环中,以便重新启动整个请求/响应过程。

另请注意,如果您在我的网站上运行此代码,我会非常沮丧。