You have to download JSSE (if you have J2SE 1.4 it´s built in). JSSE requires J2SE 1.2 or higher, so it can not be used in R5. Put the JSSE-jars (jsse.jar, jcert.jar, jnet.jar) into the classpath and use something like this (it can be rewritten to work with arguments from the command line):
import java.io.BufferedWriter; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.io.LineNumberReader; import java.io.OutputStreamWriter; import java.io.Writer; import java.net.Socket; import java.net.URL; import java.net.URLEncoder; import java.net.URLConnection; import java.util.Hashtable; import java.util.Enumeration; import javax.net.ssl.SSLSocketFactory; import javax.net.SocketFactory; /** * A tool for testing HTTP / HTTPS connections. * * @author Johan Känngård, http://dev.kanngard.net */ public class URLConnectionTester { private String address = "server.com"; private int port = 443; private boolean sslEnabled = true; private String request = null; /** * Called when this class is invoked from the command line. * * @param args the arguments from the command line. */ public static void main(String[] args) { // This outputs interesting debug things: System.setProperty("javax.net.debug", "all"); java.security.Security.addProvider( new com.sun.net.ssl.internal.ssl.Provider()); URLConnectionTester tester = new URLConnectionTester(); } /** * Creates a new URLConnectionTester. */ public URLConnectionTester() { Socket socket = null; Writer out = null; LineNumberReader lnr = null; try { if (sslEnabled) { SocketFactory socketFactory = SSLSocketFactory.getDefault(); socket = socketFactory.createSocket(address, port); } else { socket = new Socket(address, port); } out = new BufferedWriter( new OutputStreamWriter( socket.getOutputStream())); request = getLoginRequest(address, "user", "password"); //request = getRestrictedRequest( address, "/secret.nsf", "A06394EE78E2EF7847DDFA08C15A6A6B"); //request = getLogoutRequest( address, "A06394EE78E2EF7847DDFA08C15A6A6B"); out.write(request + "n"); out.flush(); lnr = new LineNumberReader( new BufferedReader( new InputStreamReader( socket.getInputStream()))); for (String s = lnr.readLine(); s != null; s = lnr.readLine()) { System.out.println((s); } } catch (IOException e) { e.printStackTrace(e); } finally { if (out != null) { try { out.close(); } catch (IOException e) { } } if (lnr != null) { try { lnr.close(); } catch (IOException e) { } } if (socket != null) { try { socket.close(); } catch (IOException e) { } } } } private String getFormData(Hashtable formTable) { StringBuffer formData = new StringBuffer(); String key = null; Enumeration enum = formTable.keys(); while (enum.hasMoreElements()) { key = (String) enum.nextElement(); formData.append(URLEncoder.encode(key) + "=" + URLEncoder.encode((String) formTable.get(key)) + "&"); } return formData.toString().substring(0, formData.length() - 1); } private String getLoginRequest( String host, String username, String password) { Hashtable formTable = new Hashtable(); formTable.put("Username", username); formTable.put("Password", password); String formData = getFormData(formTable); return "POST /?Login HTTP/1.1n" + "Host: " + host + "n" + "Content-Type: application/x-www-form-urlencodedn" + "Content-Length: " + formData.length() + "n" + "n" + formData + "n"; } private String getRestrictedRequest( String host, String url, String domCookie) { return "GET " + url + " HTTP/1.1n" + "Host: " + host + "n" + "Cookie: DomAuthSessId=" + domCookie + "n"; } private String getLogoutRequest( String host, String domCookie) { return getRestrictedRequest(host, "/?Logout", domCookie); } }