Search code examples
c#asp.net.netwebrequest

How to get a redirection response


Say if I put www.abc.com in the browser, the browser automatically gets redirected to www.xyz.com. I need to get that redirect url from server side. That is, if www.abc.com returns a redirect url www.xyz.com, how can I request this redirect URL (www.xyz.com) from the original URL (www.abc.com)?


Solution

  • Here's a snippet from a web crawler that shows how to handle redirects:

      HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
      webRequest.AllowAutoRedirect = false;  // IMPORTANT
      webRequest.UserAgent = ...;
      webRequest.Timeout = 10000;           // timeout 10s
    
      // Get the response ...
      using (webResponse = (HttpWebResponse)webRequest.GetResponse())
      {   
         // Now look to see if it's a redirect
         if ((int)webResponse.StatusCode >= 300 && (int)webResponse.StatusCode <= 399)
         {
           string uriString = webResponse.Headers["Location"];
           Console.WriteLine("Redirect to " + uriString ?? "NULL");
           ...
         }
      }