不要为此目的使用WebClient ,因为如果不覆盖方法,您将无法在此处关闭AllowAutoRedirect 。
对于您的场景来说,更简单的是使用HttpRequest,您可以(并且必须)在其中关闭AllowAutoRedirect。
HttpWebRequest req = (HttpWebRequest) WebRequest.Create(myUrl);
req.AllowAutoRedirect = false;
HttpResponse resp = (HttpWebResponse) myHttpWebRequest.GetResponse();
要确定HttpRequest提供的HttpResponse是否包含重定向,请检查StatusCode是 300、301、302 还是 303(如果需要,甚至是 307)。如果找到这样的StatusCode,请查看 Location: 标头以查找重定向 URL。
string redirUrl = null;
switch (resp.StatusCode)
{
case HttpStatusCode.MultipleChoices:
case HttpStatusCode.Redirect:
case HttpStatusCode.RedirectMethod:
case HttpStatusCode.MovedPermanently:
//case HttpStatusCode.TemporaryRedirect:
// Redirect found. Get the redirection URL from the Location: header
redirUrl = resp.Headers[HttpResponseHeader.Location];
break;
}
如果找到了重定向 Url,它将存储在redirUrl变量中。