Apache HttpClient 4.2.1 POST demande de remplir le formulaire après une connexion réussie

J’écris une application qui peut se connecter à un site et soumettre un certain formulaire. Je peux me connecter avec succès, mais quand j’essaie d’envoyer une autre demande POST pour soumettre un autre formulaire, rien ne se passe.

Ceci est mon code:

try { //log in to site HttpPost httpPost = new HttpPost("http://mysite.ru"); List nvps = new ArrayList(); nvps.add(new BasicNameValuePair("login", "guest")); nvps.add(new BasicNameValuePair("password", "guest")); httpPost.setEntity(new UrlEncodedFormEntity(nvps, Consts.UTF_8)); HttpResponse response = httpClient.execute(httpPost); HttpEntity entity = response.getEntity(); EntityUtils.consume(entity); //all ok. i obtained cookie List cookies = httpClient.getCookieStore().getCookies(); if (cookies.isEmpty()) { System.out.println("None"); } else { for (int i = 0; i < cookies.size(); i++) { System.out.println("- " + cookies.get(i).toString()); ConnectionManager.printLog("- " + cookies.get(i).toString()); } } //then trying to fill another form in another page of this site httpPost = new HttpPost("http://mysite.ru/?h[0][mode]=controllers&h[0][action]=add&h[1][mode]=controllers"); List nvps2 = new ArrayList(); nvps2.add(new BasicNameValuePair("owner", "0")); nvps2.add(new BasicNameValuePair("imei", "123456789123456")); nvps2.add(new BasicNameValuePair("password", "asdfghj")); nvps2.add(new BasicNameValuePair("type_id", "6")); nvps2.add(new BasicNameValuePair("remarks", "")); httpPost.setEntity(new UrlEncodedFormEntity(nvps2)); response = httpClient.execute(httpPost); //after filling this form, site must redirect me on another page. entity = response.getEntity(); //but then I look on page I obtained, it's still the same page with form I sortinged to fill. //It seems like I didn't post request. Ssortingng pageHTML = EntityUtils.toSsortingng(entity); System.out.println(pageHTML); EntityUtils.consume(entity); } finally { httpClient.getConnectionManager().shutdown(); } 

La seconde forme ne diffère pas du premier par type.

J’ai résolu mon problème. En deuxième forme (pas le formulaire de connexion), il y avait le bouton Envoyer:

 

...

...

...

...

...

Pour remplir le formulaire, enregistrez et allez à la page suivante, je devrais append un autre ValuePair à ma demande de post:

 nvps2.add(new BasicNameValuePair("apply", "Save")); 

Je ne sais pas pourquoi je n’ai pas eu besoin d’envoyer une telle valeur de bouton pour me connecter lorsque j’ai rempli le formulaire d’autorisation. Mais maintenant tout fonctionne!