public static void main(String argv[]) {
        System.out.println("Starting URL tests");
        System.out.println("Test 1: Simple URL test");
        try {
            URL url = new URL("http", "www.fsf.org", 80, "/");
            if (!url.getProtocol().equals("http") || !url.getHost().equals("www.fsf.org") || url.getPort() != 80 || !url.getFile().equals("/")) System.out.println("FAILED: Simple URL test");
            System.out.println("URL is: " + url.toString());
            URLConnection uc = url.openConnection();
            if (uc instanceof HttpURLConnection) System.out.println("Got the expected connection type");
            HttpURLConnection hc = (HttpURLConnection) uc;
            hc.connect();
            System.out.flush();
            System.out.println("Dumping response headers");
            for (int i = 0; ; i++) {
                String key = hc.getHeaderFieldKey(i);
                if (key == null) break;
                System.out.println(key + ": " + hc.getHeaderField(i));
            }
            System.out.flush();
            System.out.println("Dumping contents");
            BufferedReader br = new BufferedReader(new InputStreamReader(hc.getInputStream()));
            for (String str = br.readLine(); str != null; str = br.readLine()) {
                System.out.println(str);
            }
            System.out.flush();
            hc.disconnect();
            System.out.println("Content Type: " + hc.getContentType());
            System.out.println("Content Encoding: " + hc.getContentEncoding());
            System.out.println("Content Length: " + hc.getContentLength());
            System.out.println("Date: " + hc.getDate());
            System.out.println("Expiration: " + hc.getExpiration());
            System.out.println("Last Modified: " + hc.getLastModified());
            System.out.println("PASSED: Simple URL test");
        } catch (IOException e) {
            System.out.println("FAILED: Simple URL test: " + e);
        }
        System.out.println("Test 2: URL parsing test");
        try {
            URL url = new URL("http://www.urbanophile.com/arenn/trans/trans.html#mis");
            if (!url.toString().equals("http://www.urbanophile.com/arenn/trans/trans.html#mis")) System.out.println("FAILED: Parse URL test: " + url.toString()); else {
                System.out.println("Parsed ok: " + url.toString());
                url = new URL("http://www.foo.com:8080/#");
                if (!url.toString().equals("http://www.foo.com:8080/#")) System.out.println("FAILED: Parse URL test: " + url.toString()); else {
                    System.out.println("Parsed ok: " + url.toString());
                    url = new URL("http://www.bar.com/test:file/");
                    if (!url.toString().equals("http://www.bar.com/test:file/")) System.out.println("FAILED: Parse URL test: " + url.toString()); else {
                        System.out.println("Parsed ok: " + url.toString());
                        url = new URL("http://www.gnu.org");
                        if (!url.toString().equals("http://www.gnu.org/")) System.out.println("FAILED: Parse URL test: " + url.toString()); else {
                            System.out.println("Parsed ok: " + url.toString());
                            url = new URL("HTTP://www.fsf.org/");
                            if (!url.toString().equals("http://www.fsf.org/")) System.out.println("FAILED: Parse URL test: " + url.toString()); else {
                                System.out.println("Parsed ok: " + url.toString());
                                System.out.println("PASSED: URL parse test");
                            }
                        }
                    }
                }
            }
        } catch (IOException e) {
            System.out.println("FAILED: URL parsing test: " + e);
        }
        System.out.println("Test 3: getContent test");
        try {
            URL url = new URL("http://localhost/~arenn/services.txt");
            Object obj = url.getContent();
            System.out.println("Object type is: " + obj.getClass().getName());
            if (obj instanceof InputStream) {
                System.out.println("Got InputStream, so dumping contents");
                BufferedReader br = new BufferedReader(new InputStreamReader((InputStream) obj));
                for (String str = br.readLine(); str != null; str = br.readLine()) System.out.println(str);
                br.close();
            } else {
                System.out.println("FAILED: Object is not an InputStream");
            }
            System.out.println("PASSED: getContent test");
        } catch (IOException e) {
            System.out.println("FAILED: getContent test: " + e);
        }
        System.out.println("URL test complete");
    }