我最近发现以下内容不适用于某些网站,如IMDB.com。WebRequest“HEAD”轻量级替代品
class Program
{
static void Main(string[] args)
{
try
{
System.Net.WebRequest wc = System.Net.WebRequest.Create("http://www.imdb.com"); //args[0]);
((HttpWebRequest)wc).UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.153.1 Safari/525.19";
wc.Timeout = 1000;
wc.Method = "HEAD";
WebResponse res = wc.GetResponse();
var streamReader = new System.IO.StreamReader(res.GetResponseStream());
Console.WriteLine(streamReader.ReadToEnd());
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
它返回一个HTTP 405(方法不允许)。我的问题是,我使用与上述类似的代码来检查链接是否有效,以及绝大多数时候它是否正常工作。我可以将它切换到方法相同的GET,它可以工作(增加超时),但是这会使事情减慢一个数量级。我假设405响应是IMDB服务器端的服务器配置。
有没有办法让我在.NET中以轻量级的方式做同样的事情?或者,有没有办法解决上面的代码,所以它作为一个GET请求与imdb一起使用?
我不得不增加超时时间,但上面发布的代码适用于我。将其更改为POST将毫无意义,因为您没有任何要发布的数据。而你的标题谈到HEAD,但你没有做HEAD请求。请澄清问题是什么,因为你的“破”的代码工作正常。 – 2011-03-18 15:17:25
乌,真的很愚蠢的错字在标题。现在修正了......想到一件事并输入另一件事的经典例子。当你运行上面的代码时,你没有得到405回应?编辑:好的,意识到即使我的代码是有缺陷的。以上是我的意思是发布,并编辑给405错误(和有道理.....) – Serapth 2011-03-18 15:29:22