Mit Java auf einer Website einloggen

Status
Nicht offen für weitere Antworten.

ProgrammierGenie

Aktives Mitglied
Hallo,
Folgende Methode gibt mir den Quelltext einer HTML-Seite aus.

Code:
    BufferedReader URLinput;
    String line;
    try{
      URL url = new URL("test.htm");

      HttpURLConnection http = (HttpURLConnection) url.openConnection();

      http.setDoInput(true);
      http.setDoOutput(true);
      http.setUseCaches(false);
      http.setRequestMethod("POST");
      http.connect();

      URLinput = new BufferedReader(new InputStreamReader(http.getInputStream()));
      String alles = "";
      while ( (line = URLinput.readLine()) != null) {
        System.out.println(line);
      }
    } catch(IOException e){}

Dies ist die HTML-Seite, deren Code mir ausgegeben wird.

Code:
<html>
  <head>
    <title>test</title>
  </head>
  <body>
    <form method=post>
      <table border=0>
	<tr> 
	  <td>[b]User name:[/b]</td>
	  <td><input type=text name=username></td>
	</tr>
	<tr> 
	  <td>[b]Password:[/b]</td>
	  <td><input type=password name=password></td>
	</tr>
	<tr> 
	  <td colspan=2 nowrap>
	    <input type=submit value="Login" name="submit">
	  </td>
	</tr>
      </table>
    </form>
  </body>
</html>

Wie kann ich mich auf der Seite einloggen und den Quelltext anzeigen von der Seite die nach dem Login kommt?
Bitte helft mir
 
Du musst das Passwort und den username als post-Parameter übergeben. In den Klassen URLConection, URL und HttpURLConnection hab ich nichts gefunden. Vielleicht suchst du mal in der API...
 
Hoi,

Habe selber noch nicht viel Erfahrung mit Java. Aber übergibt man die Parameter nicht mit der URL ?

Code:
URL url = new URL("test.htm?username=deinname&password=deinpw");

Wobei in Deinem Passwort und Namen keine Sonderzeichen vorkommen dürfen sonst muss Du diese noch nach UTF8-Zeichensatz konventieren.
 
Gibt es hier vieleicht neue erkenntnisse? Hänge ebenfalls am selbigen Problem und weiß nicht wo ich ansetzen soll.
 
also:
in der url kann man vermutlich nicht übergeben: http unterscheidet zwischen GET-Parametern, die in der URL übergeben werden und POST Parametern, die so mitgschickt wrden, wenn der Programmierer der Seite "gut" gearbeitet hat liest er nicht irgendwelche parameter aus sondern die POST-Parameter, die an der URL ignoriert er einfach.


Sieh dir mal die Jakarta-Tools an, die Stellen Klassen bereit mit denen man auch POST-Parameter übergeben kann.
 
in dem Html Formular sehe ich kein <form Action="http://www.irgendwas.de"

wenn die Addresse bekannt ist kannst du direkt an die Adresse senden. Etwa so:
Code:
String postData = "name=Wurst&vorname=Hans";
URL irgendwasUrl = new URL("http://www.irgendwas.de");
URLConnection connection = irgendwasUrl .openConnection();
connection.setDoOutput(true); // HTTP POST verwenden!
PrintWriter out = new PrintWriter(
connection.getOutputStream(), true);
out.println(postData); // Daten der Post-Nachricht
out.close();
BufferedReader in = new BufferedReader(
new InputStreamReader(connection.getInputStream()));
// Antwort des Servers von "in" lesen...

Das sollte funktionieren
 
und am ende, wenn der seitenscript kontrolliert von welche seite du kommst, oder hängt session variablen ein, war ganze arbeit umsonst.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben