【问题标题】:Why does this WebRequest to sony.com throw an exception?为什么这个对 sony.com 的 WebRequest 会抛出异常?
【发布时间】:2014-07-02 23:18:25
【问题描述】:

我的目标是编写一个 C# 方法来验证 url 是否指向有效的在线资源。它目前看起来像这样:

string url = "http://www.sony.com/";
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Method = "HEAD";
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
   var msg = response.StatusCode == HttpStatusCode.OK ? "OK" : "Dead Link";
   Console.WriteLine(msg);
}

即使我可以在 Web 浏览器中浏览到 Sony url,此代码也会引发异常。起初我以为他们的网络服务器不支持 HEAD。不知道有些没有?但它仍然会引发 GET 异常。有什么建议可以更好地编写此代码来处理此类情况吗?

【问题讨论】:

  • 抛出什么异常?
  • System.Net.WebException:请求已中止:操作已超时。对不起,我应该发布的。

标签: c# .net httpwebrequest webrequest


【解决方案1】:

此站点需要 User-Agent 标头。添加这一行:

request.UserAgent = "SO/1.0";

【讨论】:

  • @user3766657 如果解决了问题,请将此答案标记为已接受:P
  • 是的,我只需要等 5 分钟就可以了。
  • 我可以知道它是什么用户代理吗?谢谢
  • @Alex SO (Stackoverflow) :) 短于:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET4.0C; .NET4.0E)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-24
  • 2011-07-19
  • 2010-11-06
  • 2015-05-23
  • 1970-01-01
相关资源
最近更新 更多