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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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)

+ 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