Previous | Next | Trail Map | Custom Networking and Security | Working with URLs


Parsing a URL

The URL class provides several methods that let you query it for information about the URL. You can get the protocol, host name, port number, and filename from a URL using these accessor methods:
getProtocol()
returns a string containing the URL's protocol
getHost()
returns a string containing the URL's host name
getPort()
returns the URL's port number. The getPort() method returns an integer that is the port number. If the port is not set getPort() returns -1.
getFile()
returns a string containing the URL's filename.
getRef()
returns a string containing the URL's reference.

Note: Remember that not all URL addresses contain these components. The URL class provides these methods because HTTP URLs do contain these components and are perhaps the most commonly used URLs. The URL class is somewhat HTTP-centric.

You can use these getXXX() methods to get information about the URL regardless of the constructor that you used to create the URL object.

The URL class, along with these accessor methods, frees you from ever having to parse URLs again! Given any string specification of a URL, just create a new URL object and call any of the accessor methods for the information you need. This small example program creates a URL from a string specification and then uses the URL object's accessor methods to parse the URL:

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

class ParseURL {
    public static void main(String args[]) {
        URL aURL = null;
        try {
            aURL = new URL("http://java.sun.com:80/tutorial/intro.html#DOWNLOADING");
        } catch (MalformedURLException e) {
            ;
        }
        System.out.println("protocol = " + aURL.getProtocol());
        System.out.println("host = " + aURL.getHost());
        System.out.println("filename = " + aURL.getFile());
        System.out.println("port = " + aURL.getPort());
        System.out.println("ref = " + aURL.getRef());
    }
}

A Note about The getRef() Method

At the time of this writing, getRef() works only if you create the URL using one of these two constructors:
URL(String absoluteURLSpecification);
URL(URL baseURL, String relativeURLSpecification);

For example, suppose you created a URL with these statements:

URL gamelan = new URL("http://www.gamelan.com/");
URL gamelanNetworkBottom = new URL(gamelan, "Gamelan.network.html#BOTTOM");
The getRef() method correctly returns BOTTOM. However, if you created a URL (referring to the same resource as previously) with this statement:
URL gamelan = new URL("http", "www.gamelan.com", "Gamelan.network.html#BOTTOM");
The getRef() method, incorrectly, returns null.


Previous | Next | Trail Map | Custom Networking and Security | Working with URLs