tags:

views:

54

answers:

2

Is it possible to get the resulting URL from a given URL? For example

System.out.println(realUrl("sourceforge.com"));

private String  realUrl(String url)
{
 ....
}

Should print the resulting URL "http://sourceforge.net/", and similarly tinyurls would return the destination URL

+2  A: 

You can:

  • Check if a protocol is present in the string. If not, append http://

  • Then use an HTTP client (like HttpClient) to open the URL. Then follow redirects (.setFollowRedirects(true)) until it stops redirecting. That would be the "final" or "real" URL.

Some example code for HttpClient can be found here:
http://svn.apache.org/viewvc/httpcomponents/oac.hc3x/trunk/src/examples/
(See TrivialApp.java to get started)

NullUserException
A: 

Not tested properly .

import java.io.*;
import java.net.*;

public class UrlCon3
  {

    public static void main(String[] args)
      {
        String x="http://tinyurl.com/cys7t";
        while(x!=null)
        {
            System.out.println(x);
            x=getRedirectionUrl(x);
        }

      }

    static String getRedirectionUrl(String x)
    {
        BufferedReader in = null;
        try
          {
            URL url = new URL(x);
            HttpURLConnection.setFollowRedirects(false);
            HttpURLConnection uc = (HttpURLConnection)url.openConnection();
            uc.connect();
            in = new BufferedReader(new InputStreamReader(uc.getInputStream()));
            return(uc.getHeaderField("Location"));
          }
        catch (MalformedURLException e)
          {
            e.printStackTrace();
          }
        catch (IOException e)
          {
            e.printStackTrace();
          }
        finally
          {
            try
              {
                if (null != in)
                  {
                    in.close();
                  }
              }
            catch (IOException e)
              {
                // ignore
              }
          }
        return null;
    }
  }
amal