HTTP Login mit POSTMethod und httpClient

HTML

Bekanntes Mitglied
Hallo, ich habe schon einige andere Threads zum Thema gelesen allerdings bin ich selber nicht in der Lage das hinzukriegen.
Ich habe die Libraries von httpClient, commons logging, commons codec eingebunden und versuche mit der folgenden Methode den Login in diesem Fall bei lokalisten weil der Quelltext da sehr übersichtlich war.

Das Login Formular auf der Lokalisten Seite sieht so aus:

Code:
<div class="loginForm">

	<form method="post" 
		action="https://www.lokalisten.de:443/j_security_check "> 
		<dl>
			<dt>spitzname</dt>

			<dd><input type="text" tabindex="1" name="j_username" /></dd>
		</dl>
		<dl>
			<dt>
				passwort	
				<span>
					(<a href="/register/editPwdlost.do" tabindex="4">passwort vergessen?</a>)
				</span>
			</dt>

			<dd><input type="password" tabindex="2" name="j_password" /></dd>
		</dl>
		<input type="submit" tabindex="3" value="anmelden" class="loginButton">	
	</form>
</div>

Und mein Java Code sieht so aus:
Java:
HttpClient httpClient = new HttpClient();

	public void signOn() throws HttpException, IOException{

		httpClient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
		
		PostMethod post = new PostMethod("https://www.lokalisten.de:443/j_security_check ");
		
		post.setRequestHeader(new Header(
				"User-Agent", "Mozilla/5.0 /Windows; U; Windows NT 6.1; de; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5"));
		
		httpClient.setConnectionTimeout(8000);
		
		post.addParameter("j_username","test");
		post.addParameter("j_password","test");
		//post.addParameter("loginButton","anmelden"); <-- weiß nicht ob der button auch dabei sein muss
		httpClient.executeMethod(post);
		
		System.out.println(post.getResponseBodyAsString());
		
		post.releaseConnection();
	}

Wenn ich einen flaschen Benutzernamen eingebe bekomme ich gleich den Quelltext als Response in dem steht es sei ein Fehler aufgetreten.
Wenn ich mich mit richtigem Benutzernamen und Passwort anmelden möchte bekomme ich anscheinend keine Response mehr.
Es wird in der Console nur noch eine Leerzeile ausgegeben. Wenn ich dann mit einer neuen PostMethod versuche eine neue Seite aufzurufen funktioniert das aber auch nicht, also bin ich anscheinend auch nicht richtig eingeloggt.

Was fehlt mir also noch zu einem korrekten Login??
Vielen Dank schon mal
 

masta // thomas

Bekanntes Mitglied
Vermutlich sendet der Server einen Redirect nach erfolgreichem Login.
Java:
final Header l = post.getResponseHeader("location");
if (l != null) {
    System.out.println(l.getValue());
}

Alternativ, vor dem senden des POST-Requests:
Java:
post.setFollowRedirects(true);
 

HTML

Bekanntes Mitglied
also wenn ich getResponseHeader verwende bekomme ich folgenden Value:

https://www.lokalisten.de/web/showHome.do;jsessionid=B5790D37A13B05CB2C05E393D5FDA2C0.s142n1s1

showHome.do is ja die Seite zu der ich letztendlich will aber was muss ich mit dem jsessionid machen??
wenn ich auf der Seite showHome.do bin wieso kommt dann im ResponseBody nur eine Leerzeile??

wenn ich
Code:
post.setFollowRedirects(true);
verwende bleibt das Programm stehen und der Debug Modus kommt aber es gibt keine Fehlermeldung...

danke für die antwort schonmal
 

masta // thomas

Bekanntes Mitglied
Du musst die URL die du als Location vom Redirect bekommst anschließend natürlich aufrufen. ;-)
Btw. empfehle ich dir auf die neue Version des HttpClient's zu wechseln, da ist das Cookie-Management noch besser als in der Vorversion - nur als kleiner Tipp.
 

HTML

Bekanntes Mitglied
Also tut mir Leid wenn ich mich bissl blöd anstell ich poste nochmal meinen Quelltext:

Java:
HttpClient httpClient = new HttpClient();
 
    public void signOn() throws HttpException, IOException{
 
        httpClient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
        
        PostMethod post = new PostMethod("https://www.lokalisten.de:443/j_security_check ");
        
        post.setRequestHeader(new Header(
                "User-Agent", "Mozilla/5.0 /Windows; U; Windows NT 6.1; de; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5"));
        
        httpClient.setConnectionTimeout(8000);
        
        post.addParameter("j_username","test");
        post.addParameter("j_password","test");
        post.addParameter("loginButton","anmelden");
        httpClient.executeMethod(post);
        
        System.out.println(post.getResponseBodyAsString());
        
		final Header l = post.getResponseHeader("location");
		if(l != null) {
			System.out.println(l.getValue());
		}

        GetMethod go = new GetMethod(l.getValue());
	httpClient.executeMethod(go);
		
	System.out.println(go.getResponseBodyAsString());
		
	go.releaseConnection();

        post.releaseConnection();
    }
Rufe ich die URL so richtig auf??
Auf jeden Fall kommt jetzt der Quelltext der Startseite allerdings bin ich wieder nicht eingeloggt...
 

HTML

Bekanntes Mitglied
Alternativ, vor dem senden des POST-Requests:
Java:
post.setFollowRedirects(true);

Ich versuche jetzt dem Redirect zu folgen und dabei stürzt das Programm ab.
ich glaube, dass es damit etwas zu tun hat:

setFollowRedirects()

public void setFollowRedirects(boolean followRedirects)

Entity enclosing requests cannot be redirected without user intervention according to RFC 2616.

Was genau sind denn Entity enclosing requests, muss ich da evtl mit try-catch eine Exception abfangen??


Wenn ich ein falschen Passwort eingebe bekomme ich einen HTML Code der mir sagt, dass das Passwort falsch ist.
Wenn ich das richtige Passwort verwende bekomme ich den Redirect bzw. Fehler 302 File has Moved.
Er erkennt also das richtige Passwort und redirectet mich dann weiter...
Wenn ich dem Redirect aber folge funktioniert es nicht, weder mit der einen noch mit der anderen Möglichkeit...

Wenn ich den HTML Code der Login Seite soweit vereinfache, dass ich nur noch die verschiedenen <input> tags habe und die per submit am Schluss absende funktioniert der Login mit dem Browser einwandfrei...
Gibt es eine Möglichkeit auszulesen, wie genau sich der Browser nach dem Login verhält??

Vielen Dank für irgendwelche neuen Ansatzpunkte...
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
N HTTP Apache 4.2.1 HttpClient 302 nach Login und auf den weiteren Seiten. Netzwerkprogrammierung 5
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
K Login via apache httpclient Netzwerkprogrammierung 4
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
K HTTP Login Internetseite Netzwerkprogrammierung 17
lordcarlos HTTP Apache HttpClient, post und login. Netzwerkprogrammierung 2
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
B HttpClient - Server (Jetty) - getInputStream - EOF Netzwerkprogrammierung 3
G apache httpClient Problem. Netzwerkprogrammierung 5
B HttpClient Netzwerkprogrammierung 2
M Apache HTTPClient Server log ausgeben ?! Netzwerkprogrammierung 3
R Apache HttpClient File Download? Netzwerkprogrammierung 3
M HTTP HTTPClient Authentication - Quickr Server Netzwerkprogrammierung 8
H Java 1.4 HTTPClient Content von PutMethod Netzwerkprogrammierung 4
M need org.apache.commons.httpclient.* Netzwerkprogrammierung 8
P HttpClient - Daten einer Website "unvollständig" Netzwerkprogrammierung 5
M Dateiupload mittels HttpClient Netzwerkprogrammierung 3
F FileUpload mit commons HttpClient Netzwerkprogrammierung 17
T HTTP Apache Commons HttpClient Bibliothek Netzwerkprogrammierung 2
B HTTP Probleme mit HttpClient? Netzwerkprogrammierung 2
H Bilder mit HttpClient hochladen Netzwerkprogrammierung 3
T Apache HttpClient & Default Headers Netzwerkprogrammierung 9
T apache HTTPClient einloggen Netzwerkprogrammierung 2
T HttpClient - Senden via Post Netzwerkprogrammierung 12
M httpclient kann sich nicht auf asp.net Seite anmelden Netzwerkprogrammierung 2
Q HTTPS mit Apache HttpClient Netzwerkprogrammierung 4
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
C HTTPS mit Apache HTTPClient Netzwerkprogrammierung 1
M org.apache.commons.httpclient.HttpClient Netzwerkprogrammierung 3
S mit HttpClient Seiteninhalt lesen Netzwerkprogrammierung 8
P jakarta.HttpClient: Port bei GetMethod angeben Netzwerkprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben