最近我发现下面这段代码在某些网站上无法正常使用,比如IMDB.com。
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(方法不允许)错误。我的问题是,我使用与上面非常相似的代码来检查一个链接是否有效,绝大多数情况下它都能正常工作。我可以将其切换为method等于GET,然后它就能工作了(但需要增加超时时间),但这会使速度减慢一个数量级。我认为405响应是IMDB服务器端的配置问题。 有没有一种轻量级的方法在.NET中实现与上述相同的功能?或者,有没有一种方法修复上面的代码,使之成为能够在imdb上正常工作的GET请求?