【发布时间】:2011-07-18 06:01:35
【问题描述】:
我最近发现以下内容不适用于某些网站,例如 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(不允许的方法)。我的问题是,我使用与上面非常相似的代码来检查链接是否有效以及绝大多数情况下它是否正常工作。我可以将它切换到等于 GET 的方法并且它可以工作(随着超时的增加),但这会使事情减慢一个数量级。我假设 405 响应是 IMDB 服务器端的服务器配置。
有没有办法让我在 .NET 中以轻量级的方式做与上述相同的事情?或者,有没有办法修复上述代码,使其作为与 imdb 一起使用的 GET 请求工作?
【问题讨论】:
-
我不得不增加超时时间,但您在上面发布的代码对我有用。将其更改为 POST 没有任何意义,因为您没有任何数据要发布。你的标题谈到了 HEAD,但你没有做 HEAD 请求。请澄清问题是什么,因为您的“损坏”代码工作正常。
-
呃,标题中的错字真的很愚蠢。现已修复...思考一件事并输入另一件事的经典示例。当您运行上述代码时,您没有收到 405 响应?编辑:好的,意识到我的代码也有缺陷。以上是我要发布的内容,并经过编辑以给出 405 错误(并且有意义.....)
标签: c# .net webrequest http-status-code-405