Login via apache httpclient

Orex

Grünschnabel
Hi hab versucht mich auf einer Seite einzuloggen. Funktioniert alles. Bekomm aber nen 303 (für alle die nich wissen was ich meine http://www.checkupdown.com/status/E303.html) als Status.
Versuche mich gerade Testweise auf meinem Joomla TestBackend einzuloggen.
Glaub ich mach grundsätzlich was falsch...

Gekürzter und kommentierter Code.

Code:
_login(GetSomethingFromUrl("value=\"1\"","http://nmkfs.de/joomla_test/administrator/index.php"));      

//GetSomethingFromUrl liest eine seite aus und extrahiert aus der Loginform den jeweiligen Token... Die funktion Funktioniert einwandfrei...
        


public static void _login(String token){

        


    // Erzeuge einen HTTPClient
    HttpClient client = new HttpClient();

    // Post Methode erzeugen 
    PostMethod method = new PostMethod("http://nmkfs.de/joomla_test/administrator/index.php");

    method.setRequestHeader("User-Agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows 2000)");

    method.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
  // Request Parameter werden hinzugefügt
    method.addParameter("username", "xxxxx");       //inputfeld <input type="text" size="15" class="inputbox" id="modlgn_username" name="username">
    method.addParameter("passwd", "xxxxx");     //inputfeld <input type="text" size="15" class="inputbox" id="modlgn_username" name="username">
    method.addParameter("option", "com_login");     //inputfeld <input type="text" size="15" class="inputbox" id="modlgn_username" name="username">
    method.addParameter("task", "login");           //inputfeld <input type="text" size="15" class="inputbox" id="modlgn_username" name="username">
    method.addParameter(token, "1");                //inputfeld <input type="text" size="15" class="inputbox" id="modlgn_username" name="username">

   

    int statusCode = 0;
    StringBuffer inputString = null;

        try {
            // Ausführen des Requests , Seite wird angefordert
            // zurückgegeben wird ein statusCode der dir sagt ob der Request / Response erfolgreich war
            statusCode = client.executeMethod(method);
            System.out.println(statusCode);
       
 ... // ERROR wird gecatched

   // Falls Request/Response erfolgreich lese den Response aus und schreibe diesen Zeile für Zeile in einen Stringbuffer
    if (statusCode != -1) {
        try {
            String line;
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream()));
            inputString = new StringBuffer();
                while ((line = bufferedReader.readLine()) != null) {
                    inputString.append(line + "\n");
                }
        }
       ... // ERROR wird gecatched und Verbindung geschlossen
}
                       
                        
                
}

Der Code gibt keine Fehlermeldung. Ich bekomme nur den HTML ERROR CODE... Ich glaube ich habe was grundsätzliches nicht verstanden oder falsch gemacht.

Wär cool wenn wer was wüsste...
 
Bin beim Googlen auf zwei Sachen gestoßen...

303 = See Other = Die angeforderten Daten sind unter einem angegebenen URI verfügbar und sollten von dort mit Hilfe der get-Methode angefordert werden. Dieser Status-Code ist für CGI-Scripts gedacht, die mit der post-Methode aufgerufen wurden und den Browser auf eine andere Ressource lenken wollen, die mit der get-Methode angefordert werden soll.

Bzw. das:

http://www.theserverside.com/news/1365146/Redirect-After-Post

Also ich weiss was das Problem ist. Nur reicht es leider nicht die Seite danach nochmal mit GET aufzurufen..... Wie müsste ich das umsetzten?
Vielen Dank schonmal wenn wer was weiss
 

Neue Beiträge

Zurück