如果这是一个明显的,愚蠢的或以前回答过的问题,我道歉...但我现在一直在寻找答案几个小时,并且找不到任何可以帮助我的事。
我正在编写一个生成随机字符串的简单应用程序,然后将该字符串附加到图像托管网站的URL上 - 这个想法是一种图像轮盘赌。我使用以下函数验证图像是否存在:
private bool ImgVerifier(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = WebRequestMethods.Http.Head;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
int statusCode = (int)response.StatusCode;
if (statusCode == 302)
{
MessageBox.Show("Status: " + response.StatusCode.ToString() + " at URL: " + url);
response.Close();
return false;
}
else
{
MessageBox.Show("Status: " + response.StatusCode.ToString() + " at URL: " + url);
response.Close();
return true;
}
}
我遇到的问题是,除了HTTP" OK"状态。检查SeoBook Server Header Checker网站上的图片网址时,它会将该网页报告为302错误。
答案 0 :(得分:0)
302是HTTP重定向(不是错误)。您正在使用的组件会自动跟随重定向。默认情况下,HttpWebRequest.AllowAutoRedirect 为true,这就是为什么只有在成功执行重定向后才能看到OK的最终结果。
答案 1 :(得分:0)
HttpWebRequest
引发许多HTTP错误的异常。因此,您的代码永远不会到达int statusCode = (int)response.StatusCode;
。要获取这些错误,请将代码包装在try...catch
中并检查WebException.Status
属性。
如果是302,HttpWebRequest
会重定向到新页面。如果将AllowAutoRedirect
属性设置为false
,则所有HTTP状态代码为300到399的响应都将返回给应用程序。