私は最近、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 Not Allowed ) を返します。私の問題は、上記と非常によく似たコードを使用して、リンクが有効であり、ほとんどの場合正しく機能するかどうかを確認することです。私はそれをメソッド equal GET に切り替えることができ、それは機能します ( timeout の増加で) が、これにより速度が桁違いに遅くなります。405 応答は、IMDB のサーバー側のサーバー構成であると想定しています。
上記と同じことを.NETで軽量に行う方法はありますか? または、上記のコードを修正して、imdb で動作する GET 要求として機能する方法はありますか?