0

好吧,这个问题几乎解释了它。我知道在 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();
        }
    }
}
4

1 回答 1

1

您的代码HttpWebResponse一遍又一遍地检查相同的内容。它不是发出新请求,它只是查看第一个(也是唯一一个请求)的响应。

来自MSDN

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

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

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

于 2013-04-17T00:51:10.860 回答