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

Servlets/JSP Java Discussion :

Paramètre post servlet


Sujet :

Servlets/JSP Java

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut Paramètre post servlet
    Bonjour,
    j'aimerais savoir comment envoyer de manière simple des données en méthode post à une servlet ?

    En effet depuis en certain temps, j'essais d'envoyer des données de mon application java à une servlet pour sauver ces données, cette dernière ne trouve pas le paramètre.

    Voila une partie du code java pour envoyer des données :

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    private class GetXMLTask extends AsyncTask<String, Void, String> {
            @Override
            protected String doInBackground(String... urls) {
                String output = null;
                for (String url : urls) {
                    output = getOutputFromUrl(url);
                }
                return output;
            }
     
            private String getOutputFromUrl(String url) {
    			StringBuffer output = new StringBuffer("");
    			try {
    				InputStream stream = getHttpConnection(url);
    				BufferedReader buffer = new BufferedReader( new InputStreamReader(stream));
    				String s = "";
    				while ((s = buffer.readLine()) != null)
    					output.append(s);
    			} catch (IOException e1) {
    				e1.printStackTrace();
    			}
    			return output.toString();
    		}
     
    		private InputStream getHttpConnection(String urlString) throws IOException {
    			InputStream stream = null;
    			URL url = new URL(urlString);
    			URLConnection connection = url.openConnection();
    			try {
    				HttpURLConnection httpConnection = (HttpURLConnection) connection;
    				httpConnection.setRequestMethod("POST");
     
    				//Passe le txt en parametre POST
    				httpConnection.setRequestProperty("txt", "mon txt");
     
    				httpConnection.connect();
    				if (httpConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
    					stream = httpConnection.getInputStream();
    				}
     
    			} catch (Exception ex) {
    				ex.printStackTrace();
    			}
    			return stream;
    		}

    Et la partie servlet :

    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
    public void doPost(HttpServletRequest req, HttpServletResponse rep) throws IOException, ServletException {
     
    		String texte = req.getParameter("txt");
    		System.out.println (System.getProperty("user.home")) ;
    		System.out.println (System.getProperty("user.dir")) ;
    		try {
    			 String fileName = System.getProperty("user.home")+System.getProperty("file.separator")+"deck.xml" ;
    	    	 System.out.println (fileName) ;
    	         FileWriter ecrivain = new FileWriter(fileName) ;
     
    	         if(texte == null) {
    	        	 ecrivain.write ("parametre pas trouve !");
    	         } else {
    	        	 ecrivain.write (texte) ;
    	         }
     
    		     ecrivain.close();
    		 }
    	      catch (IOException e) { 
    	    		System.out.println ("Erreur d'entree sortie") ;
     
    	      }
    	}

    Merci d'avance pour vos réponses

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //Passe le txt en parametre POST
    				httpConnection.setRequestProperty("txt", "mon txt");
    Heu non, ce n'est pas du tout ce que ça fait.


    Voir la FAQ

    http://java.developpez.com/faq/java/...reseau#postUrl

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Merci de votre réponse, j'ai vais de suite voir la FAQ

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Bien,
    avoir avoir suivi la doc, j'ai encore du me planter, car il ne se passe pas grand chose (les débuts sont toujours difficiles )

    Voila le code que j'ai refais coder appli :

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    public class HttpSetServletActivity extends Activity implements OnClickListener{
        TextView outputText;
        Button button;
     
     //   public static final String URL = "http://10.0.2.2:8080/simple";
     
        private void findViewsById() {
            button = (Button) findViewById(R.id.button);
            outputText = (TextView) findViewById(R.id.outputTxt);
        }
     
        /** Called when the activity is first created. */
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.export);
            findViewsById();
        }
     
        public void onClickExport(View v){
        	/** Envoi de données par POST */
        	URL url;
    		try {
    			url = new URL("http://10.0.2.2:8080/simple");
    	    	String data = "texte=valeur1";
    	    	URLConnection conn = url.openConnection();
    	    	conn.setDoOutput(true);
    	    	OutputStreamWriter osw = new OutputStreamWriter(conn.getOutputStream());
    	    	osw.write(data);
    	    	osw.flush();
    	    	osw.close();
     
    	    	/** Récupération de la réponse de la servlet */
    			BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    			String line;
    			while ((line = br.readLine()) != null) {
     
    			} br.close();
     
     
     
    		} catch (MalformedURLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
     
     
     
        }
     
    	@Override
    	public void onClick(DialogInterface arg0, int arg1) {
    		// TODO Auto-generated method stub
    		outputText.setText("Stoto");
    	}
    }
    et le code censer faire répondre la servlet :

    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
    public class UpLoad extends HttpServlet {
    	public void doPost(HttpServletRequest req, HttpServletResponse rep)
    			throws IOException, ServletException {
     
    		System.out.println("ok");
     
    		/** Réponse de la servlet */
    		String texte = "...";
    		PrintStream out = new PrintStream(rep.getOutputStream());
    		out.println(texte);
    		out.close();
    		System.out.println("ok");
     
    	}
    }
    Le problème peut il venir du nom de la méthode coté servlet (doPost) ?

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    la méthode doPost m'a l'air correcte. Qu'est-ce que tu obtiens comme réponse coté client? Tu est sur que l'url est bonne?

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Je n'ai aucune réponse du client, ni même du serveur.
    L'application tourne sur un émulateur android, et l'url est local (http://10.0.2.2:8080/simple).

    Tout ce que j'obtiens viens d LogCat :

    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
    11-30 21:09:40.945: W/System.err(382): java.io.FileNotFoundException: http://10.0.2.2:8080/simple
    11-30 21:09:40.945: W/System.err(382): 	at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:521)
    11-30 21:09:40.957: W/System.err(382): 	at com.servlet.HttpSetServletActivity.onClickExport(HttpSetServletActivity.java:62)
    11-30 21:09:40.957: W/System.err(382): 	at java.lang.reflect.Method.invokeNative(Native Method)
    11-30 21:09:40.965: W/System.err(382): 	at java.lang.reflect.Method.invoke(Method.java:507)
    11-30 21:09:40.965: W/System.err(382): 	at android.view.View$1.onClick(View.java:2139)
    11-30 21:09:40.965: W/System.err(382): 	at android.view.View.performClick(View.java:2485)
    11-30 21:09:40.976: W/System.err(382): 	at android.view.View$PerformClick.run(View.java:9080)
    11-30 21:09:40.976: W/System.err(382): 	at android.os.Handler.handleCallback(Handler.java:587)
    11-30 21:09:40.976: W/System.err(382): 	at android.os.Handler.dispatchMessage(Handler.java:92)
    11-30 21:09:40.976: W/System.err(382): 	at android.os.Looper.loop(Looper.java:123)
    11-30 21:09:40.985: W/System.err(382): 	at android.app.ActivityThread.main(ActivityThread.java:3683)
    11-30 21:09:40.985: W/System.err(382): 	at java.lang.reflect.Method.invokeNative(Native Method)
    11-30 21:09:40.985: W/System.err(382): 	at java.lang.reflect.Method.invoke(Method.java:507)
    11-30 21:09:40.985: W/System.err(382): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    11-30 21:09:40.985: W/System.err(382): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    11-30 21:09:40.985: W/System.err(382): 	at dalvik.system.NativeStart.main(Native Method)

  7. #7
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Je viens de modifier l'url, et il semblerais que cela fonctionne.
    Je comprend pas vraiment pourquoi. Je vais faire quelques tests pour être sur du bon fonctionnement du code

  8. #8
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Je confirme, le problème est résolu, merci tchize_ pour votre aide

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

Discussions similaires

  1. Paser une URL des paramètres POST
    Par sliderman dans le forum Langage
    Réponses: 4
    Dernier message: 18/04/2008, 11h59
  2. Réponses: 7
    Dernier message: 21/12/2007, 12h56
  3. [URL Rewriting] Rajout de paramètres POST
    Par Nicolas.Cogi dans le forum Apache
    Réponses: 5
    Dernier message: 12/09/2007, 14h20
  4. Passer des paramètres POST automatiquement
    Par webrider dans le forum Langage
    Réponses: 5
    Dernier message: 29/11/2006, 21h15
  5. Passage de paramètres POST par un bouton
    Par damjal dans le forum Langage
    Réponses: 7
    Dernier message: 07/10/2005, 17h54

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