2012-04-07 8 views
0

Ich habe ein besonderes Problem, wo eine .aspx-Site wird nicht generiert eine Sitzung ID-Cookie mit einer Post-Anfrage mit HttpComponents gemacht.Probleme mit asp.net und Java HttpComponents Post-Anfrage

Die Website ist der Login für den Online-Terminplaner meiner Schule. https://www.lectio.dk/lectio/22/login.aspx Alternativ habe ich geschrieben, die HTML Pastebin: http://pastebin.com/nMhxfgjL

(Brugernavn Benutzernamen und adgangskode ist durch ein Passwort)

ich die Namen der Eingabefelder identifiziert m $ Inhalt $ username2 und m $ Inhalt $ password2 sein

Mein Code sieht wie folgt aus:

DefaultHttpClient httpclient = new DefaultHttpClient(); 

    HttpGet httpget = new HttpGet("https://www.lectio.dk/lectio/22/login.aspx"); 

    HttpResponse response = httpclient.execute(httpget); 
    HttpEntity entity = response.getEntity(); 

    System.out.println("Login form get: " + response.getStatusLine()); 
    if (entity != null) { 
     entity.consumeContent(); 
    } 

    System.out.println("Initial set of cookies:"); 
    List<Cookie> cookies = httpclient.getCookieStore().getCookies(); 
    if (cookies.isEmpty()) { 
     System.out.println("None"); 
    } else { 
     for (int i = 0; i < cookies.size(); i++) { 
      System.out.println("- " + cookies.get(i).toString()); 
     } 
    } 

    HttpPost httpost = new HttpPost("https://www.lectio.dk/lectio/22/login.aspx"); 

    List<NameValuePair> nvps = new ArrayList<NameValuePair>(); 
    nvps.add(new BasicNameValuePair("m$Content$username2", "blabla")); //set your own username 
    nvps.add(new BasicNameValuePair("m$Content$password2", "blabla")); //set your own password 

    httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); 

    response = httpclient.execute(httpost); 
    entity = response.getEntity(); 

    System.out.println("Login form get: " + response.getStatusLine()); 
    if (entity != null) { 
     entity.consumeContent(); 
    } 

    System.out.println("Post logon cookies:"); 
    cookies = httpclient.getCookieStore().getCookies(); 
    if (cookies.isEmpty()) { 
     System.out.println("None"); 
    } else { 
     for (int i = 0; i < cookies.size(); i++) { 
      System.out.println("- " + cookies.get(i).toString()); 
     } 
    } 

Aus offensichtlichen Gründen habe ich nicht meinen Benutzernamen und ein Kennwort enthalten.

Der Ausgang ich vom Laufen sie bekommen, ist

Login-Formular erhalten: HTTP/1.1 200 OK

Erste Reihe von Cookies:

[Version: 0] [name: lecmobile] [Wert: 0] [Domäne: www.lectio.dk] [Pfad: /] [Ablauf: Mo Dez 31 00:00:00 CET 2029]

[Version: 0] [Name: lectiogsc] [Wert: 831859d3-370c-a582-340d-0377177bfcae] [Domäne: www.lectio.dk] [Pfad: /] [Ablauf: Sa 1. JANUAR 00.59.59 CET 10000]

Login-Formular erhalten: HTTP/1.1 200 OK

Beitrag Anmelde Cookies:

[Version: 0] [name: lecmobile] [Wert: 0] [Domäne: www.lectio.dk] [Pfad: /] [Ablauf: Mo Dez 31 00:00:00 CET 2029]

[Version: 0] [Name: lectiogsc] [ Wert: 831859d3-370c-a582-340d-0377177bfcae] [domain: www.lectio.dk] [Pfad: /] [Ablauf: Sa 1. JANUAR 00.59.59 CET 10000]

Der einzige relevante Cookie ist der "ASP.NET_SessionId". Anscheinend wirst du das nicht bekommen, zumindest nicht mit einem Wert, bis du dich einloggst.

Auch könnte ich mir vorstellen, dass die HTTP-Antwort nicht 200 wäre, da man bei erfolgreicher Anmeldung umgeleitet wird ...

jede mögliche Hilfe würde lieben :)

Dank Mike.

Antwort

0

Das Nichtempfangen eines Sitzungscookies könnte ein Serverkonfigurationsproblem darstellen.

+0

Angst nicht. Es ist ein Problem mit der Postanforderung. Wenn ich mich manuell anmelde, erhalte ich den Session-Cookie. –

+0

Nur zur Erinnerung: Session-Cookie ist nicht unbedingt mit der Anmeldung verbunden. Wenn die Sitzungsverwaltung aktiviert ist, enthält die Antwort von der ersten Anfrage möglicherweise einen Sitzungscookie. –

+0

Ich weiß, aber es ist in diesem Fall, wie ich vom Testen mit dem Browser sehen kann :) –