Pisze aplikację na androida do obsługi prywatnego portalu.
Postawiona strona jest jednak nieco wymagająca względem logowania i nie mogę sobie poradzić z plikami cookies.
Opis problemu logowania:

  1. Trzeba metodą GET pobrać zawartość pierwszej strony, zapisać z niej cookies i z zawartości strony wyciągnąć dane potrzebne do dalszej części. - to działa
  2. Metodą POST pobieramy zawartość drugiej strony podstawiamy pod to pliki cookies i dane POST z pierwszej strony. Podczas tego strona przekierowując nas automatycznie na kolejną podstronę podaje nowe cookies które trzeba zapisać.
  3. Metodą GET pobrać zawartość trzeciej strony na której mamy finalne cookies służące do końcowej pracy.

Prosił bym o pomoc w naprawieniu problemu: w punkcie 2 ponieważ nie wiem czy:

  1. Używam odpowiednich deklaracji dla cookies.
  2. Potrzebuję aktywować funkcję "allow redirect" dla metody POST.
  3. Czy dobrze stworzyłem funkcję pobierania kodu strony dla metody PostpageLogin.

Chciałem to zrobić w ten sposób ale coś jest nie tak podczas logowania na drugiej stronie.

List<Cookie> cookies;

protected String Getpage (String url) {
	    StringBuilder Source = new StringBuilder(100000);
	    DefaultHttpClient client = new DefaultHttpClient();
	    HttpGet httpGet = new HttpGet(url);
	    client.setCookieStore((CookieStore) cookies);
	    try {
	        HttpResponse execute = client.execute(httpGet);
	        InputStream content = execute.getEntity().getContent();
	        BufferedReader buffer = new BufferedReader(new InputStreamReader(content));
	        String x = "";
	        while ((x = buffer.readLine()) != null) {
	        Source.append(x);
	        }
	    cookies = client.getCookieStore().getCookies();
	    } catch (Exception e) {
	        e.printStackTrace();
	    }

	    return Source.toString();
	}

protected String PostpageLogin (String url, String PPA) {
	    StringBuilder Source = new StringBuilder(100000);
	    DefaultHttpClient client = new DefaultHttpClient();
	    HttpPost httppost = new HttpPost(url);
	    client.setCookieStore((CookieStore) cookies);
	    try {
	         List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(6);
	         nameValuePairs.add(new BasicNameValuePair("TokenPPA", PPA)); // token do weryfikacji poprawności logowania, Druga część jest w cookies
	         nameValuePairs.add(new BasicNameValuePair("ReturnUrl", "/user/profile/login.php")); // Przskok na stronę profilu
	         nameValuePairs.add(new BasicNameValuePair("Login", login)); // Login do serwisu
	         nameValuePairs.add(new BasicNameValuePair("Password", haslo)); // hasło do serwisu
	         nameValuePairs.add(new BasicNameValuePair("Grm", "true")); //Wartość stała
	         nameValuePairs.add(new BasicNameValuePair("rememberLogin", "false")); // Wartość Stała
	         httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

                HttpResponse execute = client.execute(httppost);
	        InputStream content = execute.getEntity().getContent();
	        BufferedReader buffer = new BufferedReader(new InputStreamReader(content));
	        String x = "";
	        while ((x = buffer.readLine()) != null) {
	        Source.append(x);
	        }
	    cookies = client.getCookieStore().getCookies();
	    } catch (Exception e) {
	        e.printStackTrace();
	    }

	    return Source.toString();
	}