IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Soumettre formulaire POST


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2011
    Messages : 50
    Par défaut Soumettre formulaire POST
    Salut tout le monde!

    J'ai un petit soucis pour postuler à une offre d'emploi, je suis confronté à un petit test technique.
    Il s'agit de remplir un formulaire en moins d'une seconde!
    Le formulaire est composé d'un champ ID pour la référence de l'annonce, et d'un petit calcul tout simple mais aléatoire (genre 60*80+12):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <form action="" method="POST">
        <input type="hidden" name="title" value="submit">
        <p>ID: <input type="text" name="jobid" value="" size="10"></p>
        <p>Calcul: 65*36+17</p
        <p>Reponse: <input type="text" name="value" value="" size="10"></p>
        <p><input type="Submit" value="Soumettre">
      </form>
    Et le petit code que j'utilise pour soumettre le formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    PostMethod method = new PostMethod("MEME_URL_QUE_LA_PAGE_PRECEDENTE"); // Désolé je préfère cacher l'url
    		method.addParameter("title", "submit");
    		method.addParameter("jobid", "JOB63");
    		method.addParameter("value", resultat.toString());
     
    		try {
    			int returnCode = client.executeMethod(method);
     
    			if (returnCode == HttpStatus.SC_NOT_IMPLEMENTED) {
    				System.err
    						.println("The Post method is not implemented by this URI");
    				// still consume the response body
    				method.getResponseBodyAsString();
    			} else {
    				br = new BufferedReader(new InputStreamReader(
    						method.getResponseBodyAsStream()));
    				String readLine;
    				while (((readLine = br.readLine()) != null)) {
    					System.err.println(readLine);
    				}
    			}
    		} catch (Exception e) {
    			System.err.println(e);
    		} finally {
    			method.releaseConnection();
    			if (br != null)
    				try {
    					br.close();
    				} catch (Exception fe) {
    				}
    		}
    Je vous passe les détails car le test est un peu plus compliqué en réalité mais en gros voilà je me connecte à la page web, je récupère les valeurs, effectue le calcul et essaie de soumettre le formulaire ci-dessus.
    Le problème c'est que soit j'obtiens le message d'erreur comme quoi j'ai perdu ma session, soit cela me renvoie la page de base contenant le formulaire.

    Il s'agit peut être du fait que j'utilise la fonction "openConnection" pour récupérer la première fois les arguments et qu'ensuite j'utilise un "HttpClient" et du coup je perds le cookie???
    Mais meme en utilisant le method, avec ou sans release la connection j'ai le même soucis

    Si quelqu'un pouvait m'aider, ca serait super sympa!

    Merci

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Hello,

    Citation Envoyé par massacreur Voir le message
    Il s'agit peut être du fait que j'utilise la fonction "openConnection" pour récupérer la première fois les arguments et qu'ensuite j'utilise un "HttpClient" et du coup je perds le cookie???
    Ma foi c'est probable. Mais il est possible aussi qu'il utilise une autre information pour retenir la session, tu ne nous en as pas dit assez pour lever le doute.

    Citation Envoyé par massacreur Voir le message
    Mais meme en utilisant le method, avec ou sans release la connection j'ai le même soucis
    Peut-être ben qu'oui, peut-être ben qu'non, 'faudrait montrer.

    Sinon, bon, en l'état on en sait pas assez pour le faire, mais normalement on est jamais bien chaud pour travailler à la place des autres, on est plutôt là pour aider en cas de blocage.
    Vu que c'est un test de compétence, le "blocage" c'est que tu arrives pas à trouver toi-même ce que tu as pas fait comme il faut. Pour t'aider, on ne peut qu'essayer de te mettre sur la voie.

    Il faudrait que tu nous décrives comment tu crois t'y prendre et pourquoi.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2011
    Messages : 50
    Par défaut
    Merci pour ton retour.

    A la base il s'agit d'un simple formulaire pour postuler sauf que ca se transforme en test technique car quand on répond à la mano, ca envoie un message comme quoi il faut répondre en moins d'une seconde.
    Du coup je me suis dit qu'il fallait que je génère un code afin de soumettre la formulaire (Java/PHP ou autre...).
    La page de base est assez simple et ne contient rien d'autre que ce que je vous ai mis ainsi qu'un petit javascript contenant le cookie.

    Code HTML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <html>
      <head>
        <title>Recrutement</title>
      </head>
    <body>
    <h1> Recrutement</h1>
    <form action="" method="POST">
        <input type="hidden" name="title" value="submit">
        <p>ID: <input type="text" name="jobid" value="" size="10"></p>
        <p>Calcul: &#x34;&#x38;&#xA0;*&#xA0;&#x34;&#x39;&#xA0;+&#xA0;&#x39;&#x32;</p
        <p>Reponse: <input type="text" name="value" value="" size="10"></p>
        <p><input type="Submit" value="Soumettre">
      </form></body>
      </html>
    Et code Javascript:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function init() {
      document.cookie = 'd2p1=red6; path=';
    }
    Ensuite mon code lit donc la page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    PostMethod method = new PostMethod(
    				"URL_QUE_JE_PREFERE_CACHER");
     
    		HttpClient client = new HttpClient();
    		BufferedReader br = null;
     
    		try {
    			int returnCode = client.executeMethod(method);
     
    			if (returnCode == HttpStatus.SC_NOT_IMPLEMENTED) {
    				System.err
    						.println("The Post method is not implemented by this URI");
    				// still consume the response body
    				method.getResponseBodyAsString();
    			} else {
    				br = new BufferedReader(new InputStreamReader(
    						method.getResponseBodyAsStream()));
    				String readLine;
    				while (((readLine = br.readLine()) != null)) {
    					resp += readLine;
    				}
    			}
    		} catch (Exception e) {
    			System.err.println(e);
    		} finally {
    			//method.releaseConnection();
    			if (br != null)
    				try {
    					br.close();
    				} catch (Exception fe) {
    				}
    		}
    Puis j'effectue un traitement à partir de la réponse html pour récupérer les infos et j'obtiens le résultat du calcule.
    (les nombres sont au format hexa que je récupère, traduit en char pour faire le calcule...)

    Et donc pour finir, j'essaie de renvoyer le formulaire à l'aide de cette même fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    method = new PostMethod("MEME_URL_QUE_PRECEDEMENT");
     
    		method.addParameter("title", "submit");
    		method.addParameter("jobid", "JOB63");
    		method.addParameter("value", resultat.toString());
     
    		try {
    			int returnCode = client.executeMethod(method);
     
    			if (returnCode == HttpStatus.SC_NOT_IMPLEMENTED) {
    				System.err
    						.println("The Post method is not implemented by this URI");
    				// still consume the response body
    				method.getResponseBodyAsString();
    			} else {
    				br = new BufferedReader(new InputStreamReader(
    						method.getResponseBodyAsStream()));
    				String readLine;
    				while (((readLine = br.readLine()) != null)) {
    					System.err.println(readLine);
    				}
    			}
    		} catch (Exception e) {
    			System.err.println(e);
    		} finally {
    			method.releaseConnection();
    			if (br != null)
    				try {
    					br.close();
    				} catch (Exception fe) {
    				}
    		}
    Mais la j'obtiens des erreurs...malgré le fait que j'essaie de ne pas fermer la connection entre les deux requetes.

    Après je ne veux pas forcément la solution pré-maché mais des pistes bien évidement voir une toute autre technique si plus facile...
    Je ne souhaite pas indiquer le site web en clair pour éviter tout soucis mais je peux peut etre te le transmettre par mp si cela te dérange pas?

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par massacreur Voir le message
    La page de base est assez simple et ne contient rien d'autre que ce que je vous ai mis ainsi qu'un petit javascript contenant le cookie.
    -_-°.
    C'est bien de l'avoir vu, mais...
    Pourrais-tu nous expliquer concrètement qu'est-ce qui se passe avec un petit JavaScript contenant un cookie ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2011
    Messages : 50
    Par défaut
    En effet la solution était si proche...en fait j'avais lu sur un forum que Java géré automatiquement les cookies et que normalement je n'avais pas à m'en soucier mais j'ai du le rajouter dans le requestHeader pour qu'il soit bien pris en compte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    method.setRequestHeader("Cookie", "d2p1=red6; path=")
    J'ai donc obtenu le lien vers mon application.

    Merci encore!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Simuler un formulaire Post
    Par Boeing dans le forum Langage
    Réponses: 1
    Dernier message: 03/07/2006, 22h42
  2. formulaire (post - get)
    Par Yoshio dans le forum Langage
    Réponses: 5
    Dernier message: 22/01/2006, 16h30
  3. Pb de formulaire Post avec javascript
    Par critok dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 28/09/2005, 15h31
  4. Formulaire posté sur la mauvaise page
    Par Prue dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 15/07/2005, 12h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo