Solved

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

Posted on 2013-01-07
5
583 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 74

Accepted Solution

by:
käµfm³d   👽 earned 500 total points
Comment Utility
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
Comment Utility
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 74

Expert Comment

by:käµfm³d 👽
Comment Utility
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
Comment Utility
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
Comment Utility
Excellent
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

We all know that functional code is the leg that any good program stands on when it comes right down to it, however, if your program lacks a good user interface your product may not have the appeal needed to keep your customers happy. This issue can…
This article is for Object-Oriented Programming (OOP) beginners. An Interface contains declarations of events, indexers, methods and/or properties. Any class which implements the Interface should provide the concrete implementation for each Inter…
This video discusses moving either the default database or any database to a new volume.
This video demonstrates how to create an example email signature rule for a department in a company using CodeTwo Exchange Rules. The signature will be inserted beneath users' latest emails in conversations and will be displayed in users' Sent Items…

728 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

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now