C#检测页面重定向

Pet*_*teT 8 .net c# webclient

我试图确定http://www.accreditedqualifications.org.uk上是否存在 以下形式的资格:

http://www.accreditedqualifications.org.uk/qualification/50084811.seo.aspx

50084811是最终用户输入的资格目标.

如果他们输入无效的例如

http://www.accreditedqualifications.org.uk/qualification/50084911.seo.aspx

它们被重定向到错误页面(据我所见,http头不正确).有没有办法检测C#中的重定向.我希望能够检测到http标头中的重定向(认为它将发出2)或类似的反对必须下载整个页面.这可能会发生很多,所以我想尽量减少流量.

编辑

使用它来查看标题看起来像是为无效页面发出两个:

http://pageheaders.com/display-http-headers.php?url=http%3A%2F%2Fwww.accreditedqualifications.org.uk%2Fqualification%2F50084911.seo.aspx&agent=ie6

Jon*_*eet 13

最简单的方法可能MethodHttpWebRequest在设置AllowAutoRedirect为false的情况下使用HEAD请求(设置为"HEAD")来获取内容.我不记得是否会引起异常,但无论哪种方式都应该很容易处理.


Han*_*man 12

可以返回许多不同的代码.您可以检查各种代码:

response.StatusCode == HttpStatusCode.Redirect
Run Code Online (Sandbox Code Playgroud)

您可以在http://msdn.microsoft.com/en-us/library/system.net.httpstatuscode.aspx上查看所有可能性.

或者,您可能会发现检查响应中的位置是否不同就足够了.

var request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = "HEAD";
request.AllowAutoRedirect = false;

string location;
using (var response = request.GetResponse() as HttpWebResponse)
{
  location = response.GetResponseHeader("Location");
}
return (location != uri.OriginalString);
Run Code Online (Sandbox Code Playgroud)