Login via apache httpclient

K

kn1g

Gast
Hi hab versucht mich auf einer Seite einzuloggen. Funktioniert alles. Bekomm aber nen 303 (für alle die nich wissen was ich meine HTTP Error 303 See other Explained) als Status.
Versuche mich gerade Testweise auf meinem Joomla TestBackend einzuloggen.
Glaub ich mach grundsätzlich was falsch...

Gekürzter und kommentierter Code.



Java:
_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...
 

Firestorm87

Bekanntes Mitglied
Tolle Kommentare :)
Denn leider hat jeder deiner Parameter angeblich das gleiche Inputfield,...

Außerdem kann man ohne den kompletten HTML-Code vom Formular nur sehr wenig darüber aussagen, was da an falschem Input drin steckt.
Vom vorgehen her sollte es ansonsten funktionieren... Denke einfach, dass du entweder an die falsche Adresse den POST-Befehl sendest, oder einem in der Antwort steckenden Redirect ignorierst....
 

Sekundentakt

Bekanntes Mitglied
Wenn Du einen 303 zurückkriegst, bedeutet das, die Webseite möchte Dich auf eine andere Seite weiterleiten.

Folgendes steht dazu in der HttpClient Doku:
Entity enclosing requests cannot be redirected without user intervention according to RFC 2616.
Eine PostMethod ist eine EntitiyEnclosingMethod und folgt einem Redirect nicht automatisch.

Das heißt, Du müsstest in etwa so vorgehen ( Pseudocode ):

Java:
int statuscode = httpClient.executeMethod(method);

			int times = 0;
			Header locationHeader;
			while((statuscode == HttpStatus.SC_MOVED_TEMPORARILY || statuscode == HttpStatus.SC_MOVED_PERMANENTLY) && times < 3)
			{
				times++;//Erhöhe Times bei jedem Request um 1, um Redirect Cycles zu vermeiden 
                                           //-> das wäre dann nämlich eine Endlosschleife. 
                                          //Wir wollen maximal 3x einem Redirect folgen, bevor wir es aufgeben.
				locationHeader = method.getResponseHeader("location");
				method = new PostMethod(locationHeader.getValue());
				setParams(/* in diese Methode lagerst Du das setzen der benötigten Parameter aus - die müssen nämlich jedesmal aufs Neue gesetzt werden*/);
				statuscode = httpClient.executeMethod(method);
			}
			
			if(statuscode == HttpStatus.SC_OK)
			{
				//Du bist auf der Seite, auf die man Dich weiterleiten wollte, angekommen. . . 
			}
Den Code müsstest Du natürlich noch in einen Try-Catch-Block packen und im Finally - Block method.releaseConnection() aufrufen.

Bei Deinem bisherigen Konstrukt wurde Dir kein ResponseBody, sondern ein Header zugeschickt. Deswegen ist der InputStream von .getResponseBodyAsStream() auch leer.
 
Zuletzt bearbeitet:
K

kn1g

Gast
@Firestorm87 - sry ich hab einfach nur als beispiel da alles gepastet. sind natürlich unterschiedliche

@Sekundentakt - Hey vielen Dank für die Antwort! Hat mir wirklich weitergeholfen. Ich habs etwas anders gemacht aber ohne deinen Post wär ich nie auf die Spur gekommen! Vielen Dank!
:applaus:
 
K

kn1g

Gast
brauch ich eigentlich diese Codezeile?

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

was genau macht die? Hab in der doc nur soviel verstanden, dass hier Cookie Specifikations gesetzt werden... Aber ich als client will doch gar kein Cookie setzen??? Ich glaube ich habe das ganze grundsätzlich falsch verstanden...

Wär cool wenn es mir noch wer erklären könnte.

Merci schonmal!

(btw die Grafische Sicherheitsüberprüfung ist eine Kastrophe... ich schaffs nicht unter 5 falschen eingaben das zu lesen... oder ich klick 10 mal Grafik neu laden bis ichs lesen kann... anscheind bin ich dumm und blind -.- )
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N HTTP Apache 4.2.1 HttpClient 302 nach Login und auf den weiteren Seiten. Netzwerkprogrammierung 5
lordcarlos HTTP Apache HttpClient, post und login. Netzwerkprogrammierung 2
P Jenkins Login per Java Download Manager Netzwerkprogrammierung 15
T HTTP JSoup Automatic Website Login Netzwerkprogrammierung 1
Q-bert Link zugang ohne login sperren. Netzwerkprogrammierung 1
S Jsoup Login auf Schulserver Netzwerkprogrammierung 3
T Netzwerk Login Felder ansprechen Netzwerkprogrammierung 1
M HTTPS Login & etwas posten Netzwerkprogrammierung 0
M Sicheres Login-System für App implementieren Netzwerkprogrammierung 6
K Login Shibboleth Netzwerkprogrammierung 0
L Mit Java über PHP in MySQL anmelden (Login script) Netzwerkprogrammierung 3
D HTTP Frage zu Login & Session ID Netzwerkprogrammierung 5
J Login Bereich auf jeder Seite Netzwerkprogrammierung 4
G Cookie Verwaltungs Problem nach Login auf InetSeite (Wo utma-Cookie?) Netzwerkprogrammierung 18
I HTTP S - Zertifikate+Cockies für Form-basierten Login Netzwerkprogrammierung 2
S Automatischer Login auf einer Webseite Netzwerkprogrammierung 12
E Webseite mit Login laden Netzwerkprogrammierung 5
C Login ohne Erfolg Netzwerkprogrammierung 2
xDarkSunx Hilfe Chat Login Netzwerkprogrammierung 7
T Java => Login mit MySQL Netzwerkprogrammierung 10
M Login mit HtmlUnit Netzwerkprogrammierung 6
N Login mit Roboter Netzwerkprogrammierung 16
S HTTP Login mit CAS Authentisierung über SSL Netzwerkprogrammierung 2
M Servlet als Login Netzwerkprogrammierung 20
J Socket Doppel Login geht nicht Netzwerkprogrammierung 11
N Login auf Website Netzwerkprogrammierung 11
H HTTP Login mit POSTMethod und httpClient Netzwerkprogrammierung 5
K HTTP Login Internetseite Netzwerkprogrammierung 17
G ftp login Netzwerkprogrammierung 10
L Web Login Netzwerkprogrammierung 3
K Bad Request nach Form Login in Jakarta HttpClient Netzwerkprogrammierung 4
H Login Chatsystem Netzwerkprogrammierung 5
2 Redirect, Login und Download bei Rapidshare.com Netzwerkprogrammierung 4
lebenlechzer Login per Telnet auf Router Netzwerkprogrammierung 2
N icq login Netzwerkprogrammierung 16
M Problem: connection abbrechen und login erkennen Netzwerkprogrammierung 2
C Login bei einem php-script Netzwerkprogrammierung 2
D HTTP Apache-HttpClient/UNAVAILABLE (java 1.4) Netzwerkprogrammierung 18
Nuiton FTP Apache Commons: FTPClient und Sicherheit Netzwerkprogrammierung 9
N FTP FTP Client invalid IPv6 address (Apache Commons Net API) Netzwerkprogrammierung 6
G apache httpClient Problem. Netzwerkprogrammierung 5
D Apache Mina Serial: Error Netzwerkprogrammierung 2
M Apache HTTPClient Server log ausgeben ?! Netzwerkprogrammierung 3
R Apache HttpClient File Download? Netzwerkprogrammierung 3
0 Apache Commons File Object bekommen Netzwerkprogrammierung 4
W HTTP Apache HttpComponents und GZIP Netzwerkprogrammierung 2
F Apache commons net SFTPClient Netzwerkprogrammierung 5
D Apache CXF, JAX-WS Problem bei Arrays - einfacher Server Netzwerkprogrammierung 2
M Apache Solr doc & pdf Upload Netzwerkprogrammierung 8
M need org.apache.commons.httpclient.* Netzwerkprogrammierung 8
C apache commons net ftp bei upload unvollständig Netzwerkprogrammierung 3
R HTTP Apache HTTP Client: Request mit angehängter Datei Netzwerkprogrammierung 2
R Apache Mina - Hilfestellung Netzwerkprogrammierung 32
D Apache Mina und GWT Servlet Netzwerkprogrammierung 4
N SFTP apache keine Verbindungaufbau möglich Netzwerkprogrammierung 6
dayaftereh Fragen zu Apache Mina? Netzwerkprogrammierung 5
T HTTP Apache Commons HttpClient Bibliothek Netzwerkprogrammierung 2
Kr0e Apache Mina -> await() Netzwerkprogrammierung 30
B Tomcat Apache Server Netzwerkprogrammierung 6
J org.apache.http.auth.NTCredentials Netzwerkprogrammierung 2
A org.apache.commons http client in Netbeans einbinden Netzwerkprogrammierung 3
T Apache HttpClient & Default Headers Netzwerkprogrammierung 9
T apache HTTPClient einloggen Netzwerkprogrammierung 2
Kr0e Apache Mina Problem Netzwerkprogrammierung 2
G apache von außen zugänglich machen Netzwerkprogrammierung 5
1 Upload problem! org.apache.commons.net.ftp Netzwerkprogrammierung 3
Q HTTPS mit Apache HttpClient Netzwerkprogrammierung 4
S Google Search Webservice mit Apache Axis realisieren? Netzwerkprogrammierung 2
I Apache http-client: Problem beim Proxyaufruf Netzwerkprogrammierung 2
S Applet und JWS auf Apache-Axis (SOAP) Netzwerkprogrammierung 8
C HTTPS mit Apache HTTPClient Netzwerkprogrammierung 1
M org.apache.commons.httpclient.HttpClient Netzwerkprogrammierung 3
J Antwort eines Soaprequests parsen mittels org.apache.soap Netzwerkprogrammierung 2
B Via Java Datei zu PHP-Script auf Apache hochladen Netzwerkprogrammierung 4
A http request per socket an apache server Netzwerkprogrammierung 5
B HttpClient - Server (Jetty) - getInputStream - EOF Netzwerkprogrammierung 3
B HttpClient Netzwerkprogrammierung 2
M HTTP HTTPClient Authentication - Quickr Server Netzwerkprogrammierung 8
H Java 1.4 HTTPClient Content von PutMethod Netzwerkprogrammierung 4
P HttpClient - Daten einer Website "unvollständig" Netzwerkprogrammierung 5
M Dateiupload mittels HttpClient Netzwerkprogrammierung 3
F FileUpload mit commons HttpClient Netzwerkprogrammierung 17
B HTTP Probleme mit HttpClient? Netzwerkprogrammierung 2
H Bilder mit HttpClient hochladen Netzwerkprogrammierung 3
T HttpClient - Senden via Post Netzwerkprogrammierung 12
M httpclient kann sich nicht auf asp.net Seite anmelden Netzwerkprogrammierung 2
M Seltsame Fehlermeldung (httpclient) Netzwerkprogrammierung 6
A Jakarta Commons HTTPClient: Mehrere Requests gleichzeitig Netzwerkprogrammierung 2
E HttpClient und return Problem Netzwerkprogrammierung 6
J Jakarta HTTPClient Netzwerkprogrammierung 5
D Problem beim holen einer PHP-Seite via HttpClient Netzwerkprogrammierung 19
S mit HttpClient Seiteninhalt lesen Netzwerkprogrammierung 8
P jakarta.HttpClient: Port bei GetMethod angeben Netzwerkprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben