# URLConnection - Browseranfrage nachbauen



## hello123 (23. Apr 2009)

Hallo,
ich versuche mich mittels URLConnection im StudiVZ anzumelden...
Hierfür habe ich die HTTP-Requests per Browser mitgesnifft,
und die RequestPropertys meiner URLConnection in der Anwendung dementsprechend abgeändert,
will ich mich nun einloggen, erhalte ich unterschiedliche HTTP-Status antworten...





Funktionierender Login per Browser:








Nicht funktionierender Login per Anwendung:








Meiner Meinung nach sind beide Anfragen absolut identisch,
allerdings erhalte ich eben unterschiedliche Antworten,



Wo liegt mein Fehler?




Hier der Ausschnitt des relevanten Quellcodes:


```
try {
	        // Construct data
	        String data = URLEncoder.encode("email", "UTF-8") + "=" + URLEncoder.encode(email, "UTF-8");
	        data += "&" + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(pass, "UTF-8");
	        data += "&" + URLEncoder.encode("login", "UTF-8") + "=" + URLEncoder.encode("Einloggen", "UTF-8");
	        data += "&" + URLEncoder.encode("jsEnabled", "UTF-8") + "=" + URLEncoder.encode("true", "UTF-8");
	        data += "&" + URLEncoder.encode("redirect", "UTF-8") + "=" + URLEncoder.encode("", "UTF-8");
	        data += "&" + URLEncoder.encode("bookmark", "UTF-8") + "=" + URLEncoder.encode("", "UTF-8");
	        data += "&" + URLEncoder.encode("formkey", "UTF-8") + "=" + URLEncoder.encode(formkey(quelltext), "UTF-8");
	        // Send data
	        URL url = new URL("http://secure.studivz.net/Login");
	        URLConnection conn = url.openConnection();
	        
	        conn.setRequestProperty("User-Agent","Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 (.NET CLR 3.5.30729)");
	        conn.setRequestProperty("Host","secure.studivz.net");
	        conn.setRequestProperty("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
	        conn.setRequestProperty("Accept-Language","de-de");
	        conn.setRequestProperty("Accept-Encoding","gzip,deflate");
	        conn.setRequestProperty("Accept-Charset","ISO-8859-15,utf-8;q=0.7,*;q=0.7");
	        conn.setRequestProperty("Keep-Alive","300");
	        conn.setRequestProperty("Referer","http://www.studivz.net/Login");
	        conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
	        
	        conn.setDoOutput(true);
	        OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
	        wr.write(data);
	        wr.flush();
	    
	        // Get the response
	        BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
	        String line;
	        quelltext = "";
	        while ((line = rd.readLine()) != null) {
	        	quelltext += line + "\n";
	        }
	        wr.close();
	        rd.close();
	    } catch (Exception e) {JOptionPane.showMessageDialog(null, e.getMessage());
	    }
```





MfG


----------



## sparrow (23. Apr 2009)

Wenn beide Anfrage identisch sind, warum ist dann der Content-Length unterschiedlich?

Ich hab nur schnell drüber geschaut, aber wo sind denn eigentlich die Login-Daten? Das sind quasi die Daten nach dem Header.


----------



## hello123 (24. Apr 2009)

Richtig, das mit der Content-Length ist auffällig,
aber ich kann im Header keine Unterschiede mit Wireshark feststellen, abgesehen von der Reihenfolge, in der die Propertys im Header stehen...
Muss ich wohl nochmal genauer drüber schauen...

Die eigentlichen Login-Daten befinden sich anschließend im Abschnitt: Line-based text data in der Form:
email=max%40mustermann.de&password=secret&login=Einloggen&...


----------

