Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Java
You last visited: Today at 16:20

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



OGame Projekt in Java

Discussion on OGame Projekt in Java within the Java forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jan 2016
Posts: 5
Received Thanks: 0
OGame Projekt in Java

Hallo Zusammen,

Zur Zeit baue ich an einem OGame Automatisierungs Programm.

Meine erste Hürde war es den Login Prozess nach zu vollziehen.

Habe eine Java Klasse namens "Cookie" gebaut. Soweit tut Sie was ich wollte, die Login Cookies in eine Map<String, String> schreiben.

Klassenvariable ist Map<String, String> Cookies
Konstruktor ist Cookie(String uni, String login, String pass)
Die Funktion getSession(...) liefert dann das Cookie.


Ich tue mir noch was schwer mit der Objekt Orientierung, wie Ihr wahrscheinlich seht. Wenn jemand einen Tipp hat bzw. sagen kann was ich falsch mache wäre ich super dankbar!!! Es ist sowieso ein Wunder das diese Klasse funktioniert.

Code:
package Login;

import java.util.Map;

public class start {
	  public static void main(String[] args) throws Exception {
		  OGameLogin OGameLogin = new OGameLogin("s131-de.ogame.gameforge.com","Schlafsong", "computer#2");

		  for (Map.Entry<String, String> entry : OGameLogin.getCookies().entrySet())
          {
              System.out.println(entry.getKey() + "=" + entry.getValue());
          }
	  }
}
Code:
package Login;

import java.io.IOException;
import java.util.Map;

/* 
 * http://jsoup.org/
 * */
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.Connection.Method;

public class OGameLogin {
	static Map<String, String> Cookies = null;
	
	public OGameLogin(String uni, String login, String pass)
	{
		Cookies = getSession(uni, login, pass);
	}
	
	static Map<String,String> getCookies()
	{
		return Cookies;		
	}
	
	  private static Map<String, String> getSession(String uni, String login, String pass)
	  {
		  Connection.Response res = null;
		  Map<String, String> Cookies = null;
		  
	        try
			  {
	        		// First Visit to get SID
	        		Connection.Response loginForm = Jsoup.connect("http://www.ogame.de")
	                .method(Connection.Method.GET)
	                .execute();
	        		
	        		Cookies = loginForm.cookies();
	        		
	              try {
	                  res = Jsoup.connect("http://de.ogame.gameforge.com/main/login")
	          		        .cookies(Cookies)
	        		        .userAgent("Mozilla/5.0")
	        		        .data("uni", uni)
	        		        .data("login", login)
	        		        .data("pass", pass)
	        		        .data("kid","")
	        		        .method(Method.POST)
	                          .execute();
	
	              } catch (IOException e) {
	
	                  e.printStackTrace();
	              }
	              
	              if (res != null) {
	
	                  Cookies = res.cookies();
	              }
	        		
			  } catch (IOException e) {
	
	            e.printStackTrace();
	        }
		  	
		  return Cookies;
	  }	
}
JavaNoob is offline  
Old 01/19/2016, 18:04   #2
 
elite*gold: 0
Join Date: May 2015
Posts: 700
Received Thanks: 445
Was funktioniert denn nicht, oder willst du nur allgemeine Tipps zu deinem Code?

Allgemein:
1. Richtig Einrücken! Wenn du mit Netbeans / Eclipse / IntelliJ arbeitest, geht das sogar auf Knopfdruck.
2. Das Schlüsselwort "static" brauchst du nur sehr selten. Vielleicht musst du nochmal nachlesen, was das macht. Denn aktuell ist dein Code eigentlich gar nicht objektorientiert: Du hast zwar eine Klasse, und legst davon ein Objekt an, aber das Objekt selber speichert nichts und kann nichts: Alles in OGameLogin ist static, d.h. an kein Objekt sondern an die Klasse selber gebunden.
3. Attribute immer mit einem kleinen Buchstaben anfangen, also "cookies" statt "Cookies". Mit einem Großbuchstaben fangen nur Klassennamen an. Das ist wichtig, weil sonst jeder erst einmal denkt, "Cookies" wäre eine Klasse.
algernong is offline  
Thanks
1 User
Old 01/21/2016, 09:49   #3
 
elite*gold: 0
Join Date: Jan 2016
Posts: 5
Received Thanks: 0
Vielen Dank für Deine Antwort.

Ich habe mir in der zwischen Zeit ein paar Java OOP Tutorials angeschaut. Hier habe ich Deine Erfahrung mit dem groß/klein Schreiben von Klassen und Variablen wiedergefunden. Vielen Dank dafür!

Static hab ich auch recherchiert. Ich hab nun auch Deinen Satz mit der an die Klasse gebundene Variable verstanden. Die Variable mit Static wird nur einmal erzeugt und dann in keiner weiteren Instanz des Objekts mehr neu erzeugt.
Somit haben alle Instanzen zugriff auf die Selbe Klassen-Variable. Hab ich das richtig verstanden?

Das mit dem richtig einrücken hab ich in Eclipse nun gefunden, danke für den Tipp. Ich werde mich dann die Tage noch mal dran setzen und die Login Klasse neu bauen.

ich bin für jeden guten Ratschlag dankbar!
JavaNoob is offline  
Old 01/21/2016, 15:07   #4
 
elite*gold: 0
Join Date: May 2015
Posts: 700
Received Thanks: 445
Hey,

genau. Ein Attribut, das static ist, existiert sogar dann, wenn es gar kein Objekt der Klasse gibt (und static Methoden auch). Folgender Code etwa funktioniert:

Code:
public class Main {
    public static void main(String[] args) {
        Foo.a = 42;
        Foo.printHelloWorld();
    }
}
Code:
public class Foo {
    public static int a;
    
    public static void printHelloWorld() {
        System.out.println("Hello World");
    }
}
algernong is offline  
Old 01/21/2016, 15:46   #5
Moderator


 
elite*gold: 558
Join Date: Feb 2010
Posts: 6,544
Received Thanks: 1,424
Spätestens wenn du planst mehrere Spieler gleichzeitig mit deinem Programm zu bedienen, macht es keinen Sinn mehr die Cookies in einem statischen Attribut zu speichern, immerhin hat jeder Spieler seine eigenen Cookies. Hier sollte also jeder Spieler sein eigenes OGameLogin-Objekt haben, das dann die Cookies dieses einen Spielers beinhaltet.

Edit:
Bei deinem aktuellen Code würdest du immer nur die Cookies des letzten Spielers haben, weil du das statische Attribut bei jedem Login überschreibst. Mit der Lösung würdest du also nur die Cookies von einem Spieler speichern können, außer du speicherst die Cookies nach jedem Login noch in einem anderen Objekt, von dem jeder Spieler eins hat.
ComputerBaer is offline  
Old 01/25/2016, 07:51   #6
 
elite*gold: 0
Join Date: Jan 2016
Posts: 5
Received Thanks: 0
@algernong: Vielen herzlichen Dank. Es ist schon sehr interessant, welche Groben fehler man so machen kann.

@ComputerBear: Auch Dir danke ich für Deine recht anschauliche Erklärung an Hand des Spieler Cookie Beispiels. Sowas hilft denke ich auch anderen, die diese Thread lesen.

Am Wochenende musste ich zu viel Hausaufgaben machen. Daher bin ich noch nicht dazu gekommen, die Klasse neu zu schreiben. Aber ich hole dies Nach. Eure Hilfe ist großartig. Ich bin über den Tipp von meinem bekannten froh, hier mal zu fragen.
JavaNoob is offline  
Reply


Similar Threads Similar Threads
[Buying] Suche Programmierer (JAVA) für Projekt (kleine Aufgabe)
04/08/2015 - Coders Trading - 6 Replies
Worum gehts? Passwort-Managment Programm Was ist vorhanden? Im Grunde genommen bereits fertig Was wird benötigt? Was soll gemacht werden? - Vorhandene Klassen sollen auf "Arraylist" geändert werden - GUI soll getrennt werden so das es Fachkonzeptklassen gibt, welche mit einer Verwaltungsklasse verbunden sind und diese dann mit der GUI
ogame-x.de (2moons projekt) sucht Spieler
11/01/2013 - Browsergames - 0 Replies
Hallo liebe Pvper, vorab möchte ich sagen, dass ich ein normaler Spieler bin und einfach nur ein paar mehr Spieler für den Server suchen möchte, damit mal richtig Aktion ins Uni kommt. Der Server ist 1x Speed, erfordert also keine 24/7 Aufmerksamkeit. Er ist im alten Design und hat ein paar neue, selbst hinzugefügte Schiffe und Verteidigungsanlagen, die man aber aufgrund der extremen Anforderungen in den nächsten 1-2 Jahren nicht nutzen kann ^^ (Wirklich extrem hoch) Zurzeit sind auf dem...
[S] Java Deveplover für MC Projekt, Team 16-40 Jahre alt. [B] Aufwandsentschädigung
04/26/2012 - Minecraft Trading - 9 Replies
Moin, daher das wir aktuell an einen Minecraft Projekt grübeln brauchen wir noch einen guten Java Deveplover, er sollte ein geistig hohes alter besitzen und auch keiner sein, der nur ein Willkommen Plugin... entwickeln kann. Unser Team ist zwischen 16-40 Jahren alt, außer meine Wenigkeit, jedoch werde ich ich nur um Werbung und Homepage kümmern. Vorerst suchen wir einen Ehrenamtlich (Aufwandsentschädigung), sollte aus dem Projekt etwas größeres werden wird es ggf. gewerblich angemeldet...
Ogame Automat mit Java/Apache HTTPClient
12/02/2010 - General Coding - 3 Replies
Moin! Ich hab gestern versucht ne kleine Automatisierung für Ogame zu programmieren, bin aber direkt am Anfang gescheitert. Ich weis nicht wirklich wie ich mich einloggen soll, ich hab zwar per POST alle Felder gesendet, die mir auch FireBug beim Login anzeigt, aber ich bekomme genau nichts zurück. Hier erstmal mein Code (Java): package sibbo; import java.io.BufferedReader; import java.io.File; import java.io.FileWriter; import java.io.IOException;



All times are GMT +2. The time now is 16:20.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.