Improve company productivity with a Business Account.Sign Up

x
?
Solved

How to get 302 redirected url from an existing url in asp.net c#

Posted on 2013-01-07
5
Medium Priority
?
917 Views
Last Modified: 2013-01-24
how can we get the 302 redirected url from an old url in asp.net c# e.g. i have a url below
http://www.scotland.gov.uk/Publications/1997/01/10593
and its redirecting to http://www.scotland.gov.uk/Publications/1997/01/10593/File-1 and I need the new urls from a list of existing urls.
0
Comment
Question by:mmalik15
  • 3
  • 2
5 Comments
 
LVL 75

Accepted Solution

by:
käµfm³d   👽 earned 2000 total points
ID: 38750603
You can do the following:

using System.Net;

namespace ConsoleApplication48
{
    class Program
    {
        static void Main(string[] args)
        {
            HttpWebRequest request = HttpWebRequest.Create("http://www.scotland.gov.uk/Publications/1997/01/10593") as HttpWebRequest;
            HttpWebResponse response;
            string redirectedUrl = null;

            request.Method = "GET";
            response = request.GetResponse() as HttpWebResponse;

            if (response.StatusCode == HttpStatusCode.Found)
            {
                redirectedUrl = response.Headers["Location"];
            }
        }
    }
}

Open in new window

0
 

Author Comment

by:mmalik15
ID: 38755582
thanks for the comment kaufmed.

I have slightly altered the code. response.StatusCode is always 'OK' even when there is a redirect. I m comparing the response.ResponseUri with the original URL and its seems to be working though for only initial two requests but starts timing out then. I have a list of 13000 urls to test in a loop and wondering if that is possible. My code as below

 class Program
    {
        static void Main(string[] args)
        {
             string line;
            // Read the file and display it line by line.
            System.IO.StreamReader file =   new System.IO.StreamReader(@"C:\Users\MehtabM\Documents\URIFiles\ScotGov1.txt");

            List<string> href = new List<string>();

            while ((line = file.ReadLine()) != null)
            {
              href.Add(line);
            }

            file.Close();

            HttpWebRequest request; 
            HttpWebResponse response;
            

            foreach(string item in href)
            {
                request=HttpWebRequest.Create(item) as HttpWebRequest;
                request.Method = "GET";
                request.ContentType = "text/xml";
                response = request.GetResponse() as HttpWebResponse;


                if (response.ResponseUri.ToString() != item)
                {
                    item.Replace(item, response.ResponseUri.ToString());
                }
                response = null;

            }

           


        }
    }

Open in new window

0
 
LVL 75

Expert Comment

by:käµfm³d 👽
ID: 38761874
If this is a list of URLs that all point to the same host, then it could be that the server is blocking your connections because you are hitting it with too many requests in a short period of time. You might try inserting a delay between each call.

As to the "response.StatusCode is always 'OK'" I'm not sure. The one I tested in the example returned HttpStatusCode.Found. If your method works, then it should suffice  : )
0
 

Author Comment

by:mmalik15
ID: 38813627
thanks again kaufmed for the help.

If I change the  request.Method = "HEAD" This way we will not load whole page. Server only returns the headers and does not block subsequent requests.
0
 

Author Closing Comment

by:mmalik15
ID: 38813645
Excellent
0

Featured Post

What Kind of Coding Program is Right for You?

There are many ways to learn to code these days. From coding bootcamps like Flatiron School to online courses to totally free beginner resources. The best way to learn to code depends on many factors, but the most important one is you. See what course is best for you.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Problem Hi all,    While many today have fast Internet connection, there are many still who do not, or are connecting through devices with a slower connect, so light web pages and fast load times are still popular.    If your ASP.NET page …
An ASP.NET Web Form User Control is not newly introduced in ASP.NET. In fact, it was an old technology yet still playing a role to generate web content, especially when we want to use it to have a better and easy way to control part of the web conte…
Watch the working video to know how to import Outlook PST/OST files to Amazon WorkMail. Kernel released this tool which is very easy to use and migrate single or multiple PST and OST files to Amazon WorkMail. To know more about Kernel Import PST to …
Wrapper-1-Query. Use an Excel function to calculate a column for an Access query. Part 1. Shows a query in Access that has a calculated column with the results of an Excel worksheet function. See how to call a wrapper function from a query, and …

580 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question