Android Einloggen auf Website langsam?

Twilight

Mitglied
Guten Tag, ich programmiere seit kurzem auch für Android und wollte als erstes einen Bot zum einloggen und Nachrichten checken schreiben. Nach ein paar kleinen Tests kommt es mir aber so vor, als sei mein "Einlogg-algorithmus" nicht sehr effizient(er brauchte am Anfang mehere Minuten, aber nachdem ich den "User-Agent" entfernt habe, geht es nur noch so um die 15 Sekunden).

Nun ist meine Frage: mache ich etwas falsch oder ist das normal? bzw Was könnte ich verbessern?

Vielen Dank schon mal im voraus,

Twilight

EDIT: Ich programmiere mit Eclipse (mit Android Plugin) und für Android 2.2. Ich teste die Anwendung via Vitual Device (Auch Android 2.2).

Hier der Code:

Java:
public void doLogin(String name, String password) throws Exception {
		HttpClient client = new DefaultHttpClient();
		HttpGet httpGet = new HttpGet("http://www.java-forum.org/");
		HttpResponse httpRes = client.execute(httpGet);
	 
		HttpPost httpPost = new HttpPost(
				"http://www.java-forum.org/login.php?do=login");

		List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
		nameValuePairs.add(new BasicNameValuePair("vb_login_username", name));
		nameValuePairs.add(new BasicNameValuePair("cookieuser", "1"));
		nameValuePairs
				.add(new BasicNameValuePair("vb_login_password", password));
		nameValuePairs.add(new BasicNameValuePair("s", ""));
		nameValuePairs.add(new BasicNameValuePair("securitytoken", "guest"));
		nameValuePairs.add(new BasicNameValuePair("do", "login"));
		/*
		 * <input type="hidden" name="vb_login_md5password" /> <input
		 * type="hidden" name="vb_login_md5password_utf" /> //was damit machen?
		 */
		httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

		httpRes = client.execute(httpPost);
		httpGet = new HttpGet("http://www.java-forum.org/");
		httpRes = client.execute(httpGet);
		
		httpGet = new HttpGet("http://www.java-forum.org/usercp.php");
		httpRes = client.execute(httpGet);
		BufferedReader br = new BufferedReader(new InputStreamReader(httpRes.getEntity().getContent()));
		String readLine;
		String back = "";
		while (((readLine = br.readLine()) != null)) {
			back += readLine + "\n";
		}
		EditText text = (EditText)findViewById(R.id.editText1);
		text.setText(back);
		if (back.contains("Seit Ihrem letzten Besuch wurde in Ihren abonnierten Themen kein neuer Beitrag geschrieben.")) {
			text.setText("Nichts neues!");
		}
		client.getConnectionManager().shutdown();
	}
 
Zuletzt bearbeitet:

Twilight

Mitglied
Da ich meinen Text nicht wieder ändern kann, muss ich halt einen Doppelpost machen:

Ich habe herausgefunden, dass alles vom folgenden Code abhängt:
Java:
while (((readLine = br.readLine()) != null)) {
            back += readLine + "\n";
}

Ist das normal, dass es so lange dauert, oder braucht das "Stringadditionsverfahren" so lange und ich solte auf einen StringBuffer umsteigen (oder wie die Klasse heisst)?

Edit: Antwort: Ja!
--> Problem gelöst!
 
Zuletzt bearbeitet:

schlingel

Gesperrter Benutzer
Richtig erkannt, wenn dir das noch immer zu langsam ist, kannst du auf die URLConnection-Klasse umsteigen. Die ist viermal schneller (jedenfalls bei den Messungen die ich gemacht habe auf meinem Wildfire) als die Apache HttpClient-Klassen.
 

Ähnliche Java Themen

Neue Themen


Oben