Hi, Iam trying to login to a https secured site using Apache commons httpclient.
Iam not getting any way to pass the certificate along with my httprequest , since I cannot find any such classes in HttpClient Package.
If anybody can guide me on where do I need to add the certificate handling?
Any package to do it?
Am open to ideas, any other way to do this in java. The platform must be only java however..
I have posted my code below.
import java.net.MalformedURLException;
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache.commons.httpclient.cookie.CookieSpec;
import org.apache.commons.httpclient.methods.*;
import org.apache.commons.httpclient.protocol.Protocol;
import org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
public class TestHttpClient {
public static String formPostUrl ="https://login.findmespot.com/faces/welcome.jsp" ;
public static String LOGON_SITE = "login.findmespot.com";
static final int LOGON_PORT = 443;
public static void main(String[] args ) throws MalformedURLException
{
// AuthSSLProtocolSocketFactory ar= new AuthSSLProtocolSocketFactory(uRL, formPostUrl, uRL0, formPostUrl)
//Protocol authhttps = new Protocol("https", new AuthSSLProtocolSocketFactory(new URL("D:\key\my.keystore"), "4cKR!Z%p",new URL("D:\key\my.truststore"), "4cKR!Z%p"), 443);
HttpClient client = new HttpClient();
client.getHostConfiguration().setHost("login.findmespot.com",443,authhttps);
HttpMethod authGetmethod = new GetMethod("/index.jsp");
authGetmethod.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9");
authGetmethod.setRequestHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
authGetmethod.setRequestHeader("Accept-Language","en-us,en;q=0.5");
authGetmethod.setRequestHeader("Accept-Encoding","gzip,deflate");
authGetmethod.setRequestHeader("Accept-Charset","ISO-8859-1,utf-8;q=0.7,*;q=0.7");
authGetmethod.setRequestHeader("Keep-Alive","300");
authGetmethod.setRequestHeader("Connection","keep-alive");
authGetmethod.setRequestHeader("Referer","https://login.findmespot.com/faces/welcome.jsp");
client.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
try
{
//send first request to capture cookie information
int status = client.executeMethod(authGetmethod);
BufferedReader br = new BufferedReader(new InputStreamReader(authGetmethod.getResponseBodyAsStream()));
String str ="";
String resultJsessionid="";
while((str=br.readLine())!=null )
{
if(str.indexOf("jsessionid=")!=-1)
{
//capture Session ID
resultJsessionid=getJsessionid(str);
break;
}
}
//release connection for final login request
authGetmethod.releaseConnection();
//Process the Initial Set of Cookies
CookieSpec cookiespec = CookiePolicy.getDefaultSpec();
Cookie[] initcookies = cookiespec.match(
LOGON_SITE, LOGON_PORT, "/", false, client.getState().getCookies());
System.out.println("Initial set of cookies:");
if (initcookies.length == 0) {
System.out.println("None");
} else {
for (int i = 0; i < initcookies.length; i++) {
System.out.println("- " + initcookies[i].toString());
}
}
//try to login to the form
PostMethod authpost = new PostMethod("/faces/welcome.jsp?jessionid="+resultJsessionid );
// Set Headers
authpost.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9");
authpost.setRequestHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
authpost.setRequestHeader("Accept-Language","en-us,en;q=0.5");
authpost.setRequestHeader("Accept-Encoding","gzip,deflate");
authpost.setRequestHeader("Accept-Charset","ISO-8859-1,utf-8;q=0.7,*;q=0.7");
authpost.setRequestHeader("Keep-Alive","300");
authpost.setRequestHeader("Connection","keep-alive");
authpost.setRequestHeader("Referer","https://login.findmespot.com/faces/welcome.jsp");
// Prepare login parameters
NameValuePair inputtext1 = new NameValuePair("inputText1","TANGOFOUR");
NameValuePair inputtext5 = new NameValuePair("inputText5", "4cKR%21Z%25p");
NameValuePair oafF = new NameValuePair("oracle.adf.faces.FORM", "form11");
NameValuePair source = new NameValuePair("source","commandButton1");
NameValuePair event = new NameValuePair("event", "update");
NameValuePair partialTarget = new NameValuePair("partialTarget", "");
NameValuePair partial = new NameValuePair("partial", "true");
authpost.setRequestBody(
new NameValuePair[] {inputtext1,inputtext5,oafF,source,event,partialTarget,partial});
client.executeMethod(authpost);
System.out.println("Login form post: " + authpost.getStatusLine().toString());
// release any connection resources used by the method
authpost.releaseConnection();
// See if we got any cookies
// The only way of telling whether logon succeeded is
// by finding a session cookie
Cookie[] logoncookies = cookiespec.match(
LOGON_SITE, LOGON_PORT, "/", false, client.getState().getCookies());
System.out.println("Logon cookies:");
if (logoncookies.length == 0) {
System.out.println("None");
} else {
for (int i = 0; i < logoncookies.length; i++) {
System.out.println("- " + logoncookies[i].toString());
}
}
System.out.println(resultJsessionid);
}
catch(Exception ex)
{
System.out.println(ex.getMessage());
}
}
public static String getJsessionid(String responseText)
{
String jsession="";
int start_index= responseText.indexOf("jsessionid=");
if(start_index!=-1)
{
jsession= responseText.substring(start_index+11);
}
int last_index=jsession.indexOf("\"");
if(last_index!=-1)
jsession=jsession.substring(0,last_index);
return jsession;
}
}