HTTP Apache HttpClient, post und login.

Status
Nicht offen für weitere Antworten.

lordcarlos

Mitglied
Hallo

Ich versuche zum ersten mal einen kleinen Clienten fuer eine Webseite zu bauen. Dazu muss ich mich aber erst einmal einloggen, der HTML code auf der loginseite sieht so aus:

HTML:
<form method="post" action="login.php">
<input type="hidden" name="returnto" value="/" />

<input type="hidden" value="1" name="take_login" />
<div id="username"><input type="text" name="username" id="username_input" /><label for="username_input"></label></div>
<div id="password"><input type="password" name="password" id="password_input" /><label for="password_input"></label></div>
<div id="log_out"><input type="checkbox" name="logout" value="yes" id="log_out_input" /><label for="log_out_input"></label></div>
<div id="log_in"><input type="image" name="login" id="log_in_input" src="images/login/log_in.png" /></div>
</form>

Jetzt habe ich folgendes versucht, leider komme ich immer zur login page zurueck. Der login geht also nicht:
Java:
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;


/**
 *
 * @author carlos
 */
public class XXX {
  private static String loginURL = "http://www.xxx.tld/login.php";
  private static String browseURL = "http://www.xxx.tld/browse.php";

  public XXX() {
  }

  public void httpLogin() {
    try {
      // Client erstellen
      HttpClient client = new HttpClient();
      // Post-Methode zum Einloggen erstellen
      PostMethod postMethod0 = new PostMethod(loginURL);
      postMethod0.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
      postMethod0.addParameter("username", "superman");
      postMethod0.addParameter("password", "penispenislol");
      postMethod0.addParameter("logout", "no");
      client.executeMethod(postMethod0);
      postMethod0.releaseConnection();

      GetMethod getMethod = new GetMethod(browseURL);
      getMethod.setRequestHeader("Referer", loginURL);
      
      getMethod.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
      client.executeMethod(getMethod);
      String output = getMethod.getResponseBodyAsString();
      
      System.out.println(output);
      if(output.contains("Login page")){
        System.out.println("#### it fails :(");
      } else {
        System.out.println("#### it works :)");
      }
      
     

      getMethod.releaseConnection();

    } catch (IOException ex) {
      Logger.getLogger(HDbits_ro.class.getName()).log(Level.SEVERE, null, ex);
    }


  }
}

Ich schaetze mal ich habe da mit den postMethod0.addParameter was vergessen oder verkehrt gemacht. Hoffe ihr koennt mir helfen.
Mfg Lord-carlos

Edit:
Ich habe mir das jetzt nochmal mit einem firefox plugin angeguckt, der post sieht so aus im orginal:
POST /login.php returnto=%2F&take_login=1&username=XXX&password=XXXX&login.x=36&login.y=16

Habe mein code daraufhin folgendermaßen geaendert:
Java:
      postMethod0.addParameter("returnto", "%2F");
      postMethod0.addParameter("take_login", "1");
      postMethod0.addParameter("username", "XXXX");
      postMethod0.addParameter("password", "XXXX");
      postMethod0.addParameter("login.x", "36");
      postMethod0.addParameter("login.y", "16");

Geht aber immer noch nicht
 
Zuletzt bearbeitet:

lordcarlos

Mitglied
Ich habe jetzt mit wireshark mein Programm mit firefox verglichen, und da ist mir was aufgefallen:
firefox POST: returnto=%2F&take_login=1&username=XXXX&password=XXXX&login.x=34&login.y=17
Java POST: returnto=%252F&take_login=1&username=XXXX&password=XXXX&login.x=36&login.y=16

Warum ist das returnto da anders?
Java:
postMethod0.addParameter("returnto", "%2F");

Sollte doch %2F und nicht %252F senden.

EDIT:
Ah,
Java:
postMethod0.addParameter("returnto", "/");
Aber funktionieren tut der login immer noch nicht.
Kann ich testen ob der Cookie angenommen wurde, oder wieder gesendet wird? Wie kann man sowas debuggen?

EDIT:
Ich habe jetzt auch mal versucht mich hier ins Forum einzuloggen, bekomme das auch nicht hin:
Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package torrentloader;

import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;


/**
 *
 * @author carlos
 */
public class JavaForum {
  private static String loginURL = "http://www.java-forum.org/login.php";
  private static String referer = "http://www.java-forum.org/login.php";
  private static String browseURL = "http://www.java-forum.org/private.php";

  public JavaForum() {
  }

  public void httpLogin() {
    try {
      // Client erstellen
      HttpClient client = new HttpClient();
      client.getParams().setParameter("http.useragent", "Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.14) Gecko/2009091008 Iceweasel/3.0.14 (Debian-3.0.14-1)");
      // Post-Methode zum Einloggen erstellen
      PostMethod postMethod0 = new PostMethod(loginURL);
      postMethod0.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);

      postMethod0.addParameter("do", "login");
      postMethod0.addParameter("url", "/private.php");
      postMethod0.addParameter("vb_login_md5password", "XXXXXXXXXXXXXXXXXXXXXX");
      postMethod0.addParameter("vb_login_md5password_utf", "XXXXXXXXXXXXXXXXXXXXXX");
      postMethod0.addParameter("s", "");
      postMethod0.addParameter("securitytoken", "guest");
      postMethod0.addParameter("vb_login_username", "lordcarlos");
      postMethod0.addParameter("vb_login_password", "");

      postMethod0.setRequestHeader("Referer", referer);
      client.executeMethod(postMethod0);
      
      int postStatus = postMethod0.getStatusCode();

      GetMethod getMethod = new GetMethod(browseURL);
      getMethod.setRequestHeader("Referer", referer);
      
      getMethod.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
      client.executeMethod(getMethod);
      String output = getMethod.getResponseBodyAsString();
      
      
      System.out.println(output);
      if(!output.contains("Sie haben insgesamt 0 von maximal 500 Nachrichten gespeichert.")){
        System.out.println("#### it fails :(");
      } else {
        System.out.println("#### it works :)");
      }


      System.out.println("get status code: "+getMethod.getStatusCode());
      System.out.println("post status code: "+ postStatus);
      getMethod.releaseConnection();
      getMethod.releaseConnection();

    } catch (IOException ex) {
      Logger.getLogger(JavaForum.class.getName()).log(Level.SEVERE, null, ex);
    }


  }
}
 
Zuletzt bearbeitet:

lordcarlos

Mitglied
*bump*

Hat keine eine Idee? Oder wo ich vielleicht gucken koennte um mehr Informationen zu bekommen?
Das muss doch mal jemand vor mir ausprobiert haben ???:L

mfg lordcarlos
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D HTTP Apache-HttpClient/UNAVAILABLE (java 1.4) Netzwerkprogrammierung 18
G apache httpClient Problem. Netzwerkprogrammierung 5
M Apache HTTPClient Server log ausgeben ?! Netzwerkprogrammierung 3
N HTTP Apache 4.2.1 HttpClient 302 nach Login und auf den weiteren Seiten. Netzwerkprogrammierung 5
R Apache HttpClient File Download? Netzwerkprogrammierung 3
M need org.apache.commons.httpclient.* Netzwerkprogrammierung 8
K Login via apache httpclient Netzwerkprogrammierung 4
T HTTP Apache Commons HttpClient Bibliothek Netzwerkprogrammierung 2
T Apache HttpClient & Default Headers Netzwerkprogrammierung 9
T apache HTTPClient einloggen Netzwerkprogrammierung 2
Q HTTPS mit Apache HttpClient Netzwerkprogrammierung 4
C HTTPS mit Apache HTTPClient Netzwerkprogrammierung 1
M org.apache.commons.httpclient.HttpClient Netzwerkprogrammierung 3
Nuiton FTP Apache Commons: FTPClient und Sicherheit Netzwerkprogrammierung 9
N FTP FTP Client invalid IPv6 address (Apache Commons Net API) Netzwerkprogrammierung 6
D Apache Mina Serial: Error Netzwerkprogrammierung 2
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
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
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
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
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
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
H HTTP Login mit POSTMethod und httpClient Netzwerkprogrammierung 5
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
K Bad Request nach Form Login in Jakarta HttpClient Netzwerkprogrammierung 4
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
F http Post auf einen Grafana Server Netzwerkprogrammierung 3
S HTTP Post?!? - Java Server Netzwerkprogrammierung 7
O HTTP Bilderübergabe per POST Netzwerkprogrammierung 1
T HTTPS-Requests an Server: POST-Parameter kommen nicht an Netzwerkprogrammierung 5
N Post u Head Request an Server Netzwerkprogrammierung 4
F HTTP POST - "Already connected" Netzwerkprogrammierung 0
C Android: Json-POST Request zu REST Webservice Netzwerkprogrammierung 2
nrg FileUpload HTTP POST Netzwerkprogrammierung 5
R HTTP Post HTML Netzwerkprogrammierung 5
S HTTP Probleme mit POST-Befehl Netzwerkprogrammierung 2
D daten per post senden Netzwerkprogrammierung 3
B Post Request in Java Netzwerkprogrammierung 11
C HTTP POST Connect Netzwerkprogrammierung 9
I HTTP Post aus html in Java einlesen - Problem Netzwerkprogrammierung 2
I HTTP Post aus html in Java einlesen - Problem Netzwerkprogrammierung 6
T HTTP POST Request Netzwerkprogrammierung 3
C HTTP Studienarbeit Kommunikation via HTTP mit POST zwischen Server und Client Netzwerkprogrammierung 7
ARadauer POST Request absetzen.. Netzwerkprogrammierung 3
D Verbindung zu einem Server - POST Netzwerkprogrammierung 2
S HttpURLConnection POST splittet Daten in zwei Pakete Netzwerkprogrammierung 9
hdi POST Request (HttpConnection) Netzwerkprogrammierung 6
M Http POST liefert kryptischen Content Netzwerkprogrammierung 4
F POST-Daten sende Netzwerkprogrammierung 3
B Wie HTTP GET/POST Anfrage versenden? Netzwerkprogrammierung 7
N Per POST -Methode Daten an den Web-Server übertragen. Netzwerkprogrammierung 9
S Probleme beim senden von Daten per POST Methode an PHP Scrip Netzwerkprogrammierung 5
J 403 error bei POST request Netzwerkprogrammierung 3
J Post-Daten an URL schicken Netzwerkprogrammierung 2
E upload progress bei einem http file post Netzwerkprogrammierung 5
M erst POST dann Http-Request über URLConnection Netzwerkprogrammierung 3
G.I.Joe Datei per POST übertragen Netzwerkprogrammierung 2
J HTTP-POST-Request mit Anhang über Socket Netzwerkprogrammierung 2
E In Webseite einloggen/ GET, POST an PHP-Script übergeben Netzwerkprogrammierung 2
B totale HTTP/1.0 Verwirrung bei POST Netzwerkprogrammierung 5
U Webformular ausfüllen ( Post ) Netzwerkprogrammierung 7
S object via post auf servlet send und weiter bearbeiten Netzwerkprogrammierung 11
A daten an php script per post senden und ausgabe einlesen Netzwerkprogrammierung 6
O Per POST automatisch auf Website einloggen... Netzwerkprogrammierung 9
C POST-Parameter aus HTML-Script lesen Netzwerkprogrammierung 1

Ähnliche Java Themen

Neue Themen


Oben