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 :

Exécution requete http


Sujet :

Java ME

  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 Exécution requete http
    bonjour,

    J'ai créé une petite application sur mon téléphone portable (Nokia 6131) qui doit exécuter une requête http en POST.
    Mon application fonctionne très bien sur les différents emulateurs (WTK et emulateur Nokia) mais quand je l'installe sur mon téléphone, je n'ai pas de message d'erreur par contre ma requête n'est pas exécuté.

    Pouvez vous m'aider svp?

  2. #2
    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
    Voici ma fonction de connexion http:
    public String sendPostHttpRequest(String url)
    {
    HttpConnection c = null;
    DataInputStream dis = null;
    InputStream is = null;
    DataOutputStream dos = null;
    OutputStream os = null;
    StringBuffer sb = new StringBuffer();
    int rc;
    String params = new String("");

    try
    {
    c = (HttpConnection)Connector.open(url, Connector.READ_WRITE);
    c.setRequestMethod(HttpConnection.POST);
    c.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    c.setRequestProperty("If-Modified-Since", "29 Oct 1999 19:43:31 GMT" );
    c.setRequestProperty("Content-Language", "en-US" );
    c.setRequestProperty("User-Agent", "Profile/MIDP-2.0 Configuration/CLDC-1.1");
    c.setRequestProperty("Content-Type", "*/*");

    os = c.openOutputStream();
    dos = new DataOutputStream(os);
    /*byte [] byteRequest = params.getBytes ();
    for (int i = 0; i < byteRequest.length; i ++)
    {
    dos.writeByte (byteRequest [i]);
    }*/
    //byte[] request_body =params.getBytes();
    //dos.write(request_body);

    is = c.openInputStream();
    dis = new DataInputStream(is);
    /*dis = new DataInputStream(c.openInputStream());
    while((rc = dis.read()) != -1)
    {
    sb.append( (char)rc );
    }*/

    }

    catch (IOException e)
    {
    e.printStackTrace();
    sb.append( "ERROR" );
    }

    finally
    {

    try
    {
    if( c != null ) c.close();
    if( is != null ) is.close();
    if( dis != null ) dis.close();
    if( os != null ) os.close();
    if( dos != null ) dos.close();
    }
    catch ( IOException ioe )
    {
    ioe.printStackTrace();
    }
    }
    return (_textField1.getString());
    }

  3. #3
    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
    As-tu configuré ton abonnement data sur ton mobile ?
    Fais-tu les requêtes dans un thread séparé du reste de ton code ?

  4. #4
    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
    Bonjour,

    As-tu configuré ton abonnement data sur ton mobile ?
    Pour l'abonnemenet data, j'ai une puce SFR débloqué donc je ne pense pas qu'il y puisse avoir des problèmes.
    J'ai installer mon application sur mon serveur web et j'arrive à me connecter dessus pour télécharger les applications.

    Fais-tu les requêtes dans un thread séparé du reste de ton code ?
    Je n'ai pas bien compris la question car je ne maitrise pas completement les requetes http (je me suis aidé de différents exemple). Je ne sais donc pas ce que représente le thread.
    Pour informations tout mon code tient sur un fichier.

  5. #5
    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
    Si tu ne peux pas aller sur internet avec le navigateur de ton mobile, ce qui est le cas à mon avis, tu ne pourras pas accéder à internet avec ton application. C'est tout à fait logique!

  6. #6
    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
    J'ai du surement mal m'exprimé.
    J'arrive à aller sur internet avec mon mobile car je télécharge l'application depuis un serveur WAMP.
    Mais depuis mon application, les requêtes HTTP ne sont pas exécutées.
    Alors qu'il n'y a pas d'erreur de programmation et elles le sont depuis les émulateurs WTK ainsi que l'emulateur de mon téléphone (Nokia 6131).

  7. #7
    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
    Alors la seule hypothèse que je peux encore faire c'est celle des threads. Les threads ne sont pas une notion liée aux requêtes http, on les retrouve dans beaucoup de langage de programmation, à commencer par java.
    Tu trouveras facilement de nombreux exemples sur le net te présentant les threads.
    Commence par

  8. #8
    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
    Merci, je vais jeter un coup d'oeil.

  9. #9
    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
    J'ai fait une recherche sur le net où j'ai vu qu'il fallait utilisé "connector.http" dans le fichier .JAD.

    J'ai donc modifier mon fichier JAD mais ça ne fonctionne toujours pas.

    Voici mon fichier JAD

    MIDlet-1: HelloWorld, HelloWorld.png, HelloWorld
    MIDlet-Jar-Size: 2579
    MIDlet-Jar-URL: HelloWorld.jar
    MIDlet-Name: HelloWorld
    MIDlet-Permissions: javax.microedition.io.Connector.http
    MIDlet-Vendor: Unknown
    MIDlet-Version: 1.0
    MicroEdition-Configuration: CLDC-1.1
    MicroEdition-Profile: MIDP-2.0

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 61
    Par défaut
    Salut,

    Ca dépend des mobiles mais il faut parfois une configuration spécifique pour J2ME.

    J'ai galéré pas mal de temps pour que ca marche avec mon sony-ericson k750.

    Le plus simple pour voir si c'est bon, c'est de télécharger une application J2ME du style Google Map Mobile ou Opera Mini et de voir si ca fonctionne.

  11. #11
    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
    quel procédure à tu suivis pour que ça fonctionne avec ton téléphone?

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 61
    Par défaut
    Les paramètres à mettre sont dépendant de l'opérateur de téléphonie. Certain envoie un sms qui paramètre le portable, d'autre te demande de sonner au service technique, parfois c'est préconfigurer, ...

    J'ai fais ca il y a pas mal de temps et les problèmes venaient des paramètres eux-même mais je ne saurais plus te donner les détails

  13. #13
    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
    Bonjour,

    J'ai bien installé les paramètres de l'opérateurs que j'ai reçu par un SMS (c'est comme ça que j'ai pu avoir accès au Web).

    Lorsque je lance mon application, j'ai bien un message qui me demande d'activer l'accès au reseau mais ma requete HTTP n'est pas effectué tandis que le meme programme sur différents émulateurs (nokia ou autre) fonctionnen très bien.

    Sur le site, de nokia j'ai vu que ce problème est du au fait que mon application n'était pas signé.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 61
    Par défaut
    t as pu essaier avec opera mini par exemple (y a justement une nouvelle version qui vient de sortir) voir si ca marchait ?

    Si oui, je saurais pas en dire plus

  15. #15
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 137
    Par défaut
    Citation Envoyé par noname_971 Voir le message
    Sur le site, de nokia j'ai vu que ce problème est du au fait que mon application n'était pas signé.
    Non, ca doit marcher sans signature.
    Si tu ne signes pas, le Java Manager demande l'autorisation d'acces a l'utilisateur.
    c'est ce qui se passe avec ton appli, mais sans doute que cela plante plus loin. Certains tel sont un peu "sensible" à la façon dont on code l'accès http. mais cela peut être du aussi au fait que sur certains téléphones il y a un paramétrage spécifique internet pour java (sony par ex).



    Comme dit diody, il faut que tu commences par vérifier qu'une appli java comme opera mini accède bien a Internet.
    tu peux aussi essayer avec l'appli de test de J4ME http://j4me.crickee.net

  16. #16
    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
    Cela ne peux pas fonctionner car depuis la mise en place de MIDP 2.0 certaines API notamment celle qui permet l'envoie des requêtes HTTP ont été bloquées sur les téléphones portables.

  17. #17
    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 quoi ton modèle de téléphone ? parce que ce que Manitoba t'a dit est 100% juste, même au regard de MIDP2.

  18. #18
    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
    J'utilise un nokia 6131.

  19. #19
    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
    Effectivement tu avais raison, j'ai rajouté lé dos.flush et ça fonctionne très bien.

    Pour info, je laisse 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
    64
    65
    66
    67
    68
    private String sendPostHttpRequest( String url )
        {
            HttpConnection      hcon = null;
            DataInputStream     dis = null;
            DataOutputStream    dos = null;
    		byte[] tab = 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.0");
     
                // obtain DataOutputStream for sending the request string
                dos = hcon.openDataOutputStream();
     
    			params = "auth=" + _textField1.getString() + "&ID=" + _textField2.getString() + "&pda=NOK_123456&app=helloworld";
    			String t = _textField1.getString();
    			tab = t.getBytes();
    			//paramsEncrypted = encrypt(params);		// -> auth=2&ID=2&PDA=OPL_234567&app=ifmmpxpsme...
    			//String encodedData = encode( params );
    			dos.write( params.getBytes() );
     
    			/*byte [] data = params.getBytes ();
    			for (int i = 0; i < data.length;i++)
    			{
    				dos.writeByte(data[i]);
    			}*/
     
    			dos.flush();
     
                // 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( dis != null ) dis.close();
                    if( dos != null ) dos.close();
    				if( hcon != null ) hcon.close();
                } catch ( IOException ioe ) {
                    ioe.printStackTrace();
                }//end try/catch 
            }//end try/catch/finally
    		//sresponseDecrypted = decrypt(...);
            return ("parametre : " + params + " \n reponse serveur : " + responseMessage.toString() + "\n conversion" );
        }//end sendHttpPost( String )

  20. #20
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 35
    Par défaut httpGetResponse!!!!
    Bonjour,
    J'ai un souci sur ce code décompilé affiche à certains endroits le langage ASM:

    private Datum httpGetResponse()
    {
    DataInputStream input;
    byte dataKeep[];
    int responseCode;
    int count;
    input = null;
    dataKeep = (byte[])null;
    responseCode = -1;
    try
    {
    System.out.println("HttpService.httpGetResponse() " + connection.getEncoding());
    input = connection.openDataInputStream();
    responseCode = ((HttpConnection)connection).getResponseCode();
    System.out.println("HttpService.httpGetResponse() " + responseCode);
    }
    catch(Exception ex)
    {
    if(HttpTimeOut.access$0(httpTimeOut) == null)
    currentStatus = 4;
    else
    currentStatus = 6;
    return null;
    }
    count = 0;
    ByteArrayOutputStream bStrm;
    bStrm = new ByteArrayOutputStream();
    responseString = "data :";
    responseString;
    JVM INSTR new #179 <Class StringBuffer>;
    JVM INSTR dup_x1 ;
    JVM INSTR swap ;
    String.valueOf();
    StringBuffer();
    "[";
    append();
    input.available();
    append();
    "]";
    append();
    toString();
    responseString;
    System.out.println("HttpService.httpGetResponse() lecture");
    int b;
    while((b = input.read()) != -1)
    {
    bStrm.write(b);
    listener.progressed(Thread.currentThread().hashCode(), count);
    }
    dataKeep = bStrm.toByteArray();
    System.out.println("Donn\351es r\351cup\351r\351es : " + new String(dataKeep));
    System.out.println("Taille du byte Array:" + dataKeep.length);
    if(dataKeep.length > 100)
    System.out.println("Donn\351es r\351cup\351r\351es : " + (new String(dataKeep)).substring(0, 100));
    else
    System.out.println("Donn\351es r\351cup\351r\351es : " + new String(dataKeep));
    responseLength = dataKeep.length;
    try
    {
    bStrm.close();
    }
    catch(Exception e)
    {
    System.out.println("Erreur de fermeture du bais : " + e);
    }
    bStrm = null;
    if(cryptData)
    {
    if(responseCode == 401)
    currentStatus = 10;
    else
    if(responseCode != 200)
    currentStatus = 5;
    } else
    if(responseCode != 200)
    currentStatus = 5;
    break MISSING_BLOCK_LABEL_534;
    Exception ex;
    ex;
    System.out.println("Erreur dans la r\351cup\351ration des donn\351es : " + ex);
    currentStatus = 7;
    break MISSING_BLOCK_LABEL_534;
    Exception exception;
    exception;
    try
    {
    input.close();
    input = null;
    }
    catch(Exception exCloseStream)
    {
    System.out.println("Erreur de fermeture de l'InputStream : " + exCloseStream);
    currentStatus = 7;
    }
    throw exception;
    try
    {
    input.close();
    input = null;
    }
    catch(Exception exCloseStream)
    {
    System.out.println("Erreur de fermeture de l'InputStream : " + exCloseStream);
    currentStatus = 7;
    }
    if(currentStatus != 0)
    return null;
    Datum res = null;
    byte keep[] = (byte[])null;
    if(cryptData)
    try
    {
    keep = UtilPrylos.decrypt(dataKeep, cryptKey);
    }
    catch(Exception ex)
    {
    currentStatus = 9;
    return null;
    }
    else
    keep = dataKeep;
    dataKeep = (byte[])null;
    int debut = 0;
    int fin = -1;
    for(int i = 0; i < keep.length; i++)
    {
    if(keep[i] != 43 && keep[i] != 42 && keep[i] != 91)
    continue;
    debut = i;
    break;
    }

    for(int i = keep.length - 1; i >= 0; i--)
    {
    if(keep[i] == 32 || keep[i] == 10 || keep[i] == 13)
    continue;
    fin = i;
    break;
    }

    byte trimKeep[] = new byte[(fin - debut) + 1];
    System.out.println("debut " + debut + " fin " + fin);
    for(int i = 0; i < trimKeep.length; i++)
    trimKeep[i] = keep[i + debut];

    if(trimKeep.length > 0)
    try
    {
    System.out.println("HttpService.httpGetResponse() d\351but du parse SPDF");
    long begin = System.currentTimeMillis();
    res = UtilPrylos.SPDFParse(trimKeep);
    System.out.println("HttpService.httpGetResponse() fin du parse ");
    System.out.println("HttpService.httpGetResponse() temps total : " + (System.currentTimeMillis() - begin));
    }
    catch(Exception ex)
    {
    System.out.println("Erreur de parse " + ex.getMessage());
    currentStatus = 1;
    return null;
    }
    keep = (byte[])null;
    System.out.println("fin de httpgetresponse");
    return res;
    }

    Est-ce que quelqu'unn aurait une idée sur ce type d'affichage en ASM?
    Merci.

Discussions similaires

  1. [débutant] problème Exécution requete http
    Par noname_971 dans le forum Java ME
    Réponses: 1
    Dernier message: 25/04/2008, 13h51
  2. [URL] Encoder une URL (requete Http)
    Par webspeak dans le forum Général Java
    Réponses: 14
    Dernier message: 29/03/2006, 10h47
  3. Trace Excution requetes forms 6i
    Par kiwi13 dans le forum Forms
    Réponses: 2
    Dernier message: 02/07/2005, 11h43
  4. Réponses: 2
    Dernier message: 20/06/2005, 14h57
  5. [http] comment faire une requete http
    Par Slimer dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 28/07/2004, 11h48

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