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 ME Discussion :

envoie parametre requete http


Sujet :

Java ME

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Chef de Projet
    Inscrit en
    Décembre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Chef de Projet

    Informations forums :
    Inscription : Décembre 2004
    Messages : 166
    Par défaut envoie parametre requete http
    bonjour,

    J'ai crée une fonction me permettant d'envoyer des requêtes HTTP sur un serveur Apache.

    Mais, je me suis rendu compte que les paramètres de ma requête n'étaient pas pris en compte par mon serveur.

    J'ai l'impression que ma requête est interprétée comme étant une requête 'GET' et non une requete 'POST'.

    Pouvez-vous m'aider s'il vous plait?

    voici mon code :
    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
    59
    60
    61
    62
    63
     
    private String sendPostHttpRequest( String url )
        {
            HttpConnection      hcon = null;
            DataInputStream     dis = null;
            DataOutputStream    dos = null;
            StringBuffer        responseMessage = new StringBuffer();
            // the request body
    		String params = null;
     
            try {
                // an HttpConnection with both read and write access
                hcon = ( HttpConnection )Connector.open( url, Connector.READ_WRITE );
     
                // set the request method to POST
                hcon.setRequestMethod(HttpConnection.GET);
    			hcon.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    			hcon.setRequestProperty("If-Modified-Since",  "29 Oct 1999 19:43:31 GMT" );	
    			hcon.setRequestProperty("Content-Language", "en-US" );
                hcon.setRequestProperty("User-Agent", "Profile/MIDP-2.0 Configuration/CLDC-1.1");
    			hcon.setRequestProperty("Content-Type", "*/*");
     
                // obtain DataOutputStream for sending the request string
                dos = hcon.openDataOutputStream();
     
    			//params = "auth=2&id=2";
    			params = "";
     
    			byte[] request_body = params.getBytes();
    			for (int i = 0; i < request_body.length;/*&lt; params.length; */i++)
    			{
    				dos.writeByte(request_body[i]);
    			}
     
    			//dos.write(params.getBytes());
     
                // obtain DataInputStream for receiving server response
                dis = new DataInputStream( hcon.openInputStream() );
     
                // retrieve the response from server
    			int ch;
    			while ((ch = dis.read()) != -1)
    			responseMessage.append((char)ch);
            }
            catch( Exception e )
            {
                e.printStackTrace();
                responseMessage.append( "ERROR" );
            } 
            finally 
    		{
                // free up i/o streams and http connection
                try 
    			{
                    if( hcon != null ) hcon.close();
                    if( dis != null ) dis.close();
                    if( dos != null ) dos.close();
                } catch ( IOException ioe ) {
                    ioe.printStackTrace();
                }//end try/catch 
            }//end try/catch/finally
            return (params + " " + responseMessage.toString());
        }//end sendHttpPost( String )

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2004
    Messages : 187
    Par défaut
    C'est normal si tu n'as pas fait de flush sur ton outputstream.

  3. #3
    Membre confirmé
    Profil pro
    Chef de Projet
    Inscrit en
    Décembre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Chef de Projet

    Informations forums :
    Inscription : Décembre 2004
    Messages : 166
    Par défaut
    Les flushs sont déconseillés pour les requêtes HTTP.

    J'ai vu sur différents forum qu'il fallait encoder les paramètres, ce que j'essaie de faire en ce moment.

    Pour l'instant, j'ai un message d'erreur:

    The requested URL /demo6/sync/s.php.auth=2&amp;id=2 was not found on this server
    Je pense qu'il y a une problème lors de l'entrée de mes paramètres.

    Je chercher l'errreur, meme si je ne sais encore par quel bout commencer car je ne sais pas vraiment à quoi ressemble une requete HTTP en POST (je n'ai malheureusement que quelques connaissances sur le concept).

    Merci pour toutes propositions.

    Voici le code

    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
     
    private String sendPostHttpRequest( String url )
        {
            HttpConnection      hcon = null;
            DataInputStream     dis = null;
            DataOutputStream    dos = null;
            StringBuffer        responseMessage = new StringBuffer();
            // the request body
    		String params = null;
     
            try {
                // an HttpConnection with both read and write access
                hcon = ( HttpConnection )Connector.open( url, Connector.READ_WRITE );
     
                // set the request method to POST
                hcon.setRequestMethod(HttpConnection.POST);
    			hcon.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    			hcon.setRequestProperty("If-Modified-Since",  "29 Oct 1999 19:43:31 GMT" );	
    			//hcon.setRequestProperty("Content-Language", "en-US" );
    			hcon.setRequestProperty("Content-Language", "en-au" );
                hcon.setRequestProperty("User-Agent", "Profile/MIDP-2.0 Configuration/CLDC-1.1");
    			hcon.setRequestProperty("Content-Type", "*/*");
     
                // obtain DataOutputStream for sending the request string
                dos = hcon.openDataOutputStream();
     
    			byte [] data = "&auth=2&id=2".getBytes ();
     
    			dos.write(data);
     
     
                // obtain DataInputStream for receiving server response
                dis = new DataInputStream( hcon.openInputStream() );
     
                // retrieve the response from server
    			int ch;
    			while ((ch = dis.read()) != -1)
    			responseMessage.append((char)ch);
            }
            catch( Exception e )
            {
                e.printStackTrace();
                responseMessage.append( "ERROR" );
            } 
            finally 
    		{
                // free up i/o streams and http connection
                try 
    			{
                    if( hcon != null ) hcon.close();
                    if( dis != null ) dis.close();
                    if( dos != null ) dos.close();
                } catch ( IOException ioe ) {
                    ioe.printStackTrace();
                }//end try/catch 
            }//end try/catch/finally
            return (params + " " + responseMessage.toString());
        }//end sendHttpPost( String )
    Merci d'avance.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2004
    Messages : 187
    Par défaut
    Je ne sais pas où tu as vu une théorie déconseillant le flush pour les connexions http (si tu retrouves un lien ça m'intéresse), mais en tous cas si on se réfère au code fourni dans les APIs MIDP 2 dans la classe HttpConnection, l'exemple de code pour le POST fonctionne et utilise le flush sur l'outputstream.

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Par défaut
    En fait le flush influe sur la forme de l'envoi de tes données en POST.
    Il n'est pas obligatoire pour envoyer les données ecrite dans le outputStream, un simple getResponseCode envoie toutes les données du outputStream. La difference c'est que en spécifiant le flush() en general ton application va envoyer les données en mode chunked et aucun Content-Length ne sera spécifié, ce qui peut etre genant si ton serveur cherche absolument ce fameux content-length.

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2004
    Messages : 187
    Par défaut
    Merci pour ces détails Anikinisan.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/08/2011, 11h06
  2. Paybox direct plus, envoie de requete https
    Par babouk dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 15/10/2008, 11h45
  3. Récupérer un fichier par requete http avec parametre GET
    Par ggalou08 dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 22/07/2008, 16h49
  4. [curl] requete http post ( simuler envoi de formulaire )
    Par mikebranque dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 07/07/2008, 21h55
  5. Réponses: 2
    Dernier message: 20/06/2005, 14h57

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