Hallo Forum,
ich suche jetzt seit langem eine Lösung für folgendes Problem:
Ich versuche mich auf OGame Startseite per Java Code anzumelden, die Cookies zu speichern und das Onlinegame dann zu automatisieren. Kurz ich möchte einen Bot schreiben. Ich komme aus der C# (.Net) Ecke wo ich dies auch schon realisiert habe, jedoch weiß ich in Java nicht weiter.
Mein bisheriger Code in Java:
Eine Helper Klasse:
Und dann der Aufruf:
Dabei ist UniCode das Universum also der Server auf welchem man sich einloggen möchte, in meinem Fall "uni109". username und pass verstehen sich von selbst.
Das Problem ist, dass ich nicht den Quellcode der Seite zurückbekomme, welche kommt, wenn man eingeloggt wurde, sonder nur ein Javascript, welches mich zurück auf die Hauptseite führt: "<script>document.location.href='http://ogame.de'</script>"
Daraus schließe ich, dass OGame mein login nicht angenommen hat.
Ich hoffe mir kann hier jemand helfen, denn soweit ich das sehe mache ich alles genauso wie in meinem C# Programm... Nur Funktioniert es in Java nicht ???:L
Danke und Gruß
cookiehunter
PS. Falls sich jemand mit C# auskennt hänge ich hier noch meinen Funktionierenden C# Code an:
ich suche jetzt seit langem eine Lösung für folgendes Problem:
Ich versuche mich auf OGame Startseite per Java Code anzumelden, die Cookies zu speichern und das Onlinegame dann zu automatisieren. Kurz ich möchte einen Bot schreiben. Ich komme aus der C# (.Net) Ecke wo ich dies auch schon realisiert habe, jedoch weiß ich in Java nicht weiter.
Mein bisheriger Code in Java:
Eine Helper Klasse:
Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
public class HTTPHelper {
private String _cookie = "";
public String SendPost(String httpURL, String data) throws IOException {
URL url = new URL(httpURL);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
// If cookie exists, then send cookie
if (_cookie != "") {
connection.setRequestProperty("Cookie", _cookie);
connection.connect();
}
// If Post Data not empty, then send POST Data
if (data != "") {
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
out.write(data);
out.flush();
out.close();
}
// Save Cookie
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String headerName = null;
//_cookies.clear();
if (_cookie == "") {
for (int i=1; (headerName = connection.getHeaderFieldKey(i))!=null; i++) {
if (headerName.equalsIgnoreCase("Set-Cookie")) {
String cookie = connection.getHeaderField(i);
_cookie += cookie.substring(0,cookie.indexOf(";")) + "; ";
}
}
}
// Get HTML from Server
String getData = "";
String decodedString;
while ((decodedString = in.readLine()) != null) {
getData += decodedString + "\n";
}
in.close();
return getData;
}
}
Java:
HTTPHelper hh = new HTTPHelper();
String res = hh.SendPost("http://" + UniCode + ".ogame.de/game/reg/login2.php","uni_id=&v=2&is_utf8=0&uni_url=" + UniCode + ".ogame.de&login=" + username + "&pass=" + pass);
Das Problem ist, dass ich nicht den Quellcode der Seite zurückbekomme, welche kommt, wenn man eingeloggt wurde, sonder nur ein Javascript, welches mich zurück auf die Hauptseite führt: "<script>document.location.href='http://ogame.de'</script>"
Daraus schließe ich, dass OGame mein login nicht angenommen hat.
Ich hoffe mir kann hier jemand helfen, denn soweit ich das sehe mache ich alles genauso wie in meinem C# Programm... Nur Funktioniert es in Java nicht ???:L
Danke und Gruß
cookiehunter
PS. Falls sich jemand mit C# auskennt hänge ich hier noch meinen Funktionierenden C# Code an:
Java:
var cookies1 = new CookieContainer();
var request = (HttpWebRequest)WebRequest.Create("http://" + UniCode + ".ogame.de/game/reg/login2.php");
request.CookieContainer = cookies1;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
//Falls jemand übers UrlEncode stolpert, daran liegts nich...
string un = HttpUtility.UrlEncode(username);
string pw = HttpUtility.UrlEncode(pass);
using (var requestStream = request.GetRequestStream())
using (var writer = new StreamWriter(requestStream))
{
writer.Write("uni_id=&v=2&is_utf8=0&uni_url=" + UniCode + ".ogame.de&login=" + un + "&pass=" + pw);
}
string res;
using (var responseStream = request.GetResponse().GetResponseStream())
using (var reader = new StreamReader(responseStream))
{
var result = reader.ReadToEnd();
res = result;
}