Frage

Iam versuchen, auf eine https gesicherte Website einzuloggen mit Apache Commons Httpclient.

Iam keine Möglichkeit erhält das Zertifikat zusammen mit meinem Httprequest passieren, da ich keine solchen Klassen in Httpclient-Paket finden.

Wenn jemand kann mir führen, wo muss ich das Zertifikat Handhabung hinzufügen?

Jedes Paket, es zu tun?

Am offen für Ideen, eine andere Möglichkeit, dies in Java zu tun. Die Plattform muss nur Java sein aber ..

Ich habe meinen Code unten geschrieben.

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;
}

}
War es hilfreich?

Lösung

Ok schließlich habe ich einige graben und fand die Lösung selbst aus,

Ich bin Einfügen des Arbeitscodes zu einer SSL angetriebenen https-Site anmelden Sie sich mit dem HTTP-Client 3.1. Suchen Sie für jedes Feedback, wenn es einen besseren Weg, um dies ??

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.FileOutputStream;
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
{
        String nextHref="";
        HttpClient client = new HttpClient();

        HttpMethod authGetmethod = new GetMethod("https://login.findmespot.com/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");

    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();

           client.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);

       Cookie[] cookies = client.getState().getCookies();
      for (int i = 0; i < cookies.length; i++) {
        Cookie cookie = cookies[i];
        System.err.println(
          "Cookie: " + cookie.getName() +
          ", Value: " + cookie.getValue() +
          ", IsPersistent?: " + cookie.isPersistent() +
          ", Expiry Date: " + cookie.getExpiryDate() +
          ", Comment: " + cookie.getComment());


        //PostMethod authpost = new PostMethod("https://login.findmespot.com/faces/welcome.jsp?jessionid="+resultJsessionid );
        PostMethod authpost = new PostMethod("https://login.findmespot.com/faces/welcome.jsp");
        // Set Headers
        authpost.setRequestHeader("http.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/index.jsp");



        // Prepare login parameters
        NameValuePair inputtext1      = new NameValuePair("inputText1","TANGOFOUR");
        NameValuePair inputtext5   = new NameValuePair("inputText5", "~CcxpqFR");
        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


        String readLine;

          br = new BufferedReader(new InputStreamReader(authpost.getResponseBodyAsStream()));
             while(((readLine = br.readLine()) != null)) {
              System.out.println(readLine);
              nextHref=getNexthref(readLine);
          }

          authpost.releaseConnection();


         Cookie[] cookies1 = client.getState().getCookies();
            for (int i1 = 0; i < cookies1.length; i++) {
        Cookie cookie1 = cookies1[i1];
        System.err.println(
          "Cookie: " + cookie1.getName() +
          ", Value: " + cookie1.getValue() +
          ", IsPersistent?: " + cookie1.isPersistent() +
          ", Expiry Date: " + cookie1.getExpiryDate() +
          ", Comment: " + cookie1.getComment());



       HttpMethod authGetmethodNext = new GetMethod("https://login.findmespot.com"+nextHref);
        authGetmethodNext.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");
        authGetmethodNext.setRequestHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
        authGetmethodNext.setRequestHeader("Accept-Language","en-us,en;q=0.5");
        authGetmethodNext.setRequestHeader("Accept-Encoding","gzip,deflate");
        authGetmethodNext.setRequestHeader("Accept-Charset","ISO-8859-1,utf-8;q=0.7,*;q=0.7");
        authGetmethodNext.setRequestHeader("Keep-Alive","300");
        authGetmethodNext.setRequestHeader("Connection","keep-alive");
        authGetmethodNext.setRequestHeader("Referer","https://login.findmespot.com/faces/welcome.jsp");


        client.executeMethod(authGetmethodNext);
         System.out.println("Login form post: " + authGetmethodNext.getStatusLine().toString());

        PostMethod authpost1 = new PostMethod("https://login.findmespot.com/faces/history.jsp");
        // Set Headers
        authpost1.setRequestHeader("http.Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9");
        authpost1.setRequestHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
        authpost1.setRequestHeader("Accept-Language","en-us,en;q=0.5");
        authpost1.setRequestHeader("Accept-Encoding","gzip,deflate");
        authpost1.setRequestHeader("Accept-Charset","ISO-8859-1,utf-8;q=0.7,*;q=0.7");
        authpost1.setRequestHeader("Keep-Alive","300");
        authpost1.setRequestHeader("Connection","keep-alive");
        authpost1.setRequestHeader("Referer","Referer: https://login.findmespot.com/faces/trackerunit.jsp");


               client.executeMethod(authpost1);

           br = new BufferedReader(new InputStreamReader(authpost1.getResponseBodyAsStream()));
             while(((readLine = br.readLine()) != null))
             {
              System.out.println(readLine);
              }

      }
      }
    }
  catch(Exception ex)
   {
        System.out.println(ex.getMessage());
    }


}
public static String getJsessionid(String responseText) /// retu
{

    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;
}

public static String getNexthref(String inputhref)
{
   String result_href="";
   int start_index=inputhref.indexOf("href='");
     if(start_index!=-1)
   {
       result_href=inputhref.substring(start_index+6);
   }
     int last_index=result_href.indexOf("'");
   if(last_index!=-1)
       result_href=result_href.substring(0,last_index);

   return result_href;


}

}

Andere Tipps

Ich möchte Sie fragen, welche Version von Java Sie da wurden vor ihrer Verwendung auf etwas, das vor langer Zeit mir passiert ist: Java hat ein eigenes SSL-Zertifikat ist, die als Teil der Bibliothek kommt. Nach einer Weile geht das cert mehr aktuell. Das Update war auf eine neuere Version von Java zu aktualisieren. Wohlgemerkt, das war vor langer Zeit, aber ich denke, das ist Ihr Problem sein könnte.

Siehe auch . (Wiederum stark abhängig von Versionen von Java und Httpclient)

Im contrib Abschnitt für Httpclient 3.0 * gibt es eine Reihe von SSL-Protokoll Fabriken, die Ihr Leben viel einfacher machen könnten. Schauen Sie auch unter commons-ssl

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top