我最近發現以下內容不適用於某些網站,如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