这个问题几乎可以解释它。我知道在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();
}
}
}
答案 0 :(得分:1)
您的代码一遍又一遍地检查相同的HttpWebResponse
。它没有提出新的请求,只关注第一个(也是唯一的请求)的响应。
来自MSDN:
对GetResponse的多次调用返回相同的响应对象;请求不会重新发布。
您必须将所有发出请求的代码放入循环中,以便重新启动整个请求/响应过程。
另请注意,如果您在我的网站上运行此代码,我会非常沮丧。