Programming Tutorials

Connect to a password protected URL from Java program

By: Mike Cooper in Java Tutorials on 2006-12-11  

It is quite common for a Java program to connect to an URL and process its data or post data to it. Some URLs are password protected and can be connected to it only with a username and password. While manually accessing such sites, the browser will popup a login screen automatically for the user to key in username and password. But if you are connecting from a Java program then how can you do this login programmatically.

This sample Java program connects to password protected URL. The three arguments for this application is the password protected url to connect to, the username and the password. Take note that the System properties to set the proxy has to be changed to suit your own network proxy settings. If your network doesn't need a proxy then just set the proxy to false.

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

public class PostTo {
    
    private void fetchURL(String urlString, String user, String pass) {
        try {
            URL url = new URL(urlString);
            URLConnection urlConn = url.openConnection();
            urlConn.setDoInput(true);
            urlConn.setDoOutput(true);
            urlConn.setUseCaches(false);
            urlConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
//You can comment the below 4 lines if you are not behind a proxy.
            Properties sysProperties = System.getProperties();
            sysProperties.put("proxyHost", "proxy.cyberway.com.sg");
            sysProperties.put("proxyPort", "8080");
            sysProperties.put("proxySet", "true");

            try (DataOutputStream printout = new DataOutputStream(urlConn.getOutputStream());
                 BufferedReader input = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
                 FileOutputStream fos = new FileOutputStream("postto.txt")) {

                String content = "USERNAME=" + URLEncoder.encode(user) + "&PASSWORD=" + URLEncoder.encode(pass);
                printout.writeBytes(content);
                printout.flush();

                String str;
                while ((str = input.readLine()) != null) {
                    if (str.length() > 0) {
                        fos.write(str.getBytes());
                        fos.write(new String("\n").getBytes());
                    }
                }
            }
        } catch (MalformedURLException mue) {
            System.out.println(mue);
        } catch (IOException ioe) {
            System.out.println(ioe);
        }
    }

    public static void main(String args[]) {
        PostTo au = new PostTo();
        au.fetchURL(args[0], args[1], args[2]);
    }
}






Add Comment

* Required information
1000

Comments

No comments yet. Be the first!

Most Viewed Articles (in Java )

Latest Articles (in Java)