Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1783 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [J2ME] probleme de code réseau

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[J2ME] probleme de code réseau

n°979936
fade
Posté le 13-02-2005 à 14:27:55  profilanswer
 

Bonjour et merci de me lire :)
 
Je commence à apprendre J2ME depuis quelques jours pour un projet de cours. Je veux créer une application J2ME sur mon portable présentant un formulaire demandant les login/pass de l'utilisateur. L'application envoie ensuite ces infos à un programme PHP via GET qui affiche des informations si les login/pass sont corrects.
 
Voici mon code actuel :  
 

Code :
  1. import java.io.*;
  2. import javax.microedition.io.*;
  3. import javax.microedition.lcdui.*;
  4. import javax.microedition.midlet.*;
  5. public class maClasse extends MIDlet implements CommandListener {
  6.     private Display display;
  7. ///////// variables formulaire /////////
  8.     Form formulaire = null;
  9.     TextField login = null;
  10.     TextBox txtResults = null;
  11.     private Command cmdSubmit;
  12.     private Command cmdBack;
  13.     private Command cmdExit;
  14. //////////// fin ///////////////////////
  15.     String url = "http://127.0.0.1/test.php?login=monlogin&pass=monpass";
  16.     public maClasse() {
  17.        display = Display.getDisplay(this);
  18. ///////////////////////
  19.        cmdSubmit = new Command("Valider", Command.SCREEN, 1);
  20.        cmdBack = new Command("Retour", Command.BACK, 0);
  21.        cmdExit = new Command("Quitter", Command.EXIT, 1);
  22. ///////////////////////
  23.     }
  24.     public void startApp() {
  25. //////////////////////
  26.       formulaire = new Form("monsite : test" );
  27.      
  28.       login = new TextField("Entrez votre login :", null, 50, TextField.ANY);
  29.       formulaire.append(login);
  30.       formulaire.addCommand(cmdSubmit);
  31.       formulaire.addCommand(cmdExit);
  32.       formulaire.setCommandListener(this);
  33.       display.setCurrent(formulaire);
  34. /////////////////////
  35.     }
  36.     public void pauseApp() {}
  37.     public void destroyApp(boolean unconditional) {}
  38.     void connectURL(String url) throws IOException {
  39.         HttpConnection connection = null;
  40.         InputStream is = null;
  41.         OutputStream os = null;
  42.         StringBuffer stringBuffer = new StringBuffer();
  43.         TextBox textBox = null;
  44.         try {
  45.           connection = (HttpConnection) Connector.open(url);
  46.           connection.setRequestMethod(HttpConnection.GET);
  47.           connection.setRequestProperty("IF-Modified-Since","20 Jan 2001 16:19:14 GMT" );
  48.           connection.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.0" );
  49.           connection.setRequestProperty("Content-Language", "en-EN" );
  50.           connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded" );
  51.           os = connection.openOutputStream();
  52.           is = connection.openDataInputStream();
  53.           int ch;
  54.           while ((ch = is.read()) != -1) {
  55.             stringBuffer.append((char) ch);
  56.           }
  57.           textBox = new TextBox("Connexion...", stringBuffer.toString(), 1024, 0);
  58.         }
  59.         finally {
  60.           if(is!= null) {
  61.              is.close();
  62.           }
  63.           if(os != null) {
  64.              os.close();
  65.           }
  66.           if(connection != null) {
  67.              connection.close();
  68.           }
  69.         }
  70.         display.setCurrent(textBox);
  71.     }
  72.     public void commandAction(Command c, Displayable d)  {
  73.       String str = c.getLabel();
  74.       if (str.equals("Quitter" )) {
  75.          destroyApp(true);
  76.          return;
  77.       }
  78.       else if (str.equals("Retour" )) {
  79.          display.setCurrent(formulaire);
  80.          return;
  81.       }
  82. //////////// appel de connectURL ////////
  83.       try {
  84.         connectURL(url);
  85.       }
  86.       catch (IOException e) {
  87.         System.out.println("IOException " + e);
  88.         e.printStackTrace();
  89.       }
  90. ////////////////////////////////////////
  91.     }
  92. }


 
Maintenant, voilà mon problème. Lorsque j'essaie de me connecter avec ce code sans mettre de formulaire, ça marche bien. Lorsque je crée un formulaire sans la connexion, ça marche bien. Mais si j'utilise le formulaire pour me connecter, le mobile reste bloqué sur la demande de confirmation de connexion réseau.
 
Je précise que je teste actuellement sur PC via le JWT de Sun.

mood
Publicité
Posté le 13-02-2005 à 14:27:55  profilanswer
 

n°979938
elianor
bannie 17 fois
Posté le 13-02-2005 à 14:30:10  profilanswer
 

Le HTTP en J2ME, c'est qualeque chose (vire ton content-type)


---------------
JE JE SUIS LIBERTINEEEEEEEEEEE JE SUIS UNE CATINNNNNNNNN §§§§§§§§
n°979956
fade
Posté le 13-02-2005 à 14:47:25  profilanswer
 

euh...je ne vois pas de changement. Je reste bloqué sur ce magnifique :
 
http://jcom.apinc.org/arg.png

n°979961
elianor
bannie 17 fois
Posté le 13-02-2005 à 14:49:07  profilanswer
 

Ahhhh, et bien répond yes [:spamafote]
 
http://rincevent.dyndns.org/toto/Airtime.png


---------------
JE JE SUIS LIBERTINEEEEEEEEEEE JE SUIS UNE CATINNNNNNNNN §§§§§§§§
n°979969
fade
Posté le 13-02-2005 à 14:56:46  profilanswer
 

bah ouais j'y avais pensé :/
mais j'ai beau le lui dire, il veut rien savoir. Il reste sur cet écran, et ne passe pas sur celui qui affiche les infos recueillies (textBox)
 
C'est sûrement une erreur stupide, mais je trouve pas.


Message édité par fade le 13-02-2005 à 14:58:35
n°979983
elianor
bannie 17 fois
Posté le 13-02-2005 à 15:08:02  profilanswer
 

Etonnant, c'est le getConnection qui reste en attente...  
 
Tu peux désactiver les comman des de la midlet avant de faire la connection ?


---------------
JE JE SUIS LIBERTINEEEEEEEEEEE JE SUIS UNE CATINNNNNNNNN §§§§§§§§
n°980025
fade
Posté le 13-02-2005 à 15:25:59  profilanswer
 

Elianor a écrit :

Etonnant, c'est le getConnection qui reste en attente...  
 
Tu peux désactiver les comman des de la midlet avant de faire la connection ?


 
ça je sais pas faire, désolé je débute, mais je veux bien essayer si tu m'explique rapidement.

n°980034
elianor
bannie 17 fois
Posté le 13-02-2005 à 15:29:15  profilanswer
 

removeCommand ?


---------------
JE JE SUIS LIBERTINEEEEEEEEEEE JE SUIS UNE CATINNNNNNNNN §§§§§§§§
n°980049
fade
Posté le 13-02-2005 à 15:39:47  profilanswer
 

ok, j'ai modifié ça :
 

Code :
  1. public void commandAction(Command c, Displayable d)  {
  2.       String str = c.getLabel();
  3.       if (str.equals("Quitter" )) {
  4.          destroyApp(true);
  5.          return;
  6.       }
  7.       else if (str.equals("Retour" )) {
  8.          display.setCurrent(formulaire);
  9.          return;
  10.       }
  11.       formulaire.removeCommand(cmdSubmit); // <-
  12.       formulaire.removeCommand(cmdExit); // <-
  13.       formulaire.removeCommand(cmdBack); // <-
  14.       try {
  15.         connectURL(url);
  16.       }
  17.       catch (IOException e) {
  18.         System.out.println("IOException " + e);
  19.         e.printStackTrace();
  20.       }
  21.     }


 
mais ça ne donne rien.
 
Sinon, j'avais et j'ai toujours un warning mais je ne pense pas que ce soit important :
 

Code :
  1. Warning: To avoid potential deadlock, operations that may block, such as
  2. networking, should be performed in a different thread than the
  3. commandAction() handler.

n°980053
elianor
bannie 17 fois
Posté le 13-02-2005 à 15:41:57  profilanswer
 

non, j'avais aussi ce warning sur mon appli, et ça ne l'empêchait pas de marcher.


---------------
JE JE SUIS LIBERTINEEEEEEEEEEE JE SUIS UNE CATINNNNNNNNN §§§§§§§§
mood
Publicité
Posté le 13-02-2005 à 15:41:57  profilanswer
 

n°980063
fade
Posté le 13-02-2005 à 15:50:42  profilanswer
 

bah te casse pas la tête, je vais continuer à écumer tous les sites j2me de google et comparer les codes sources avec le mien pour essayer de trouver le probleme. Je reposte ici si j'avance.

n°1203183
Zogzog4
Posté le 20-09-2005 à 12:12:03  profilanswer
 

Je crois qu'il ne faut pas mettre cette partie dans le CommandAction.
Il me semble qu'il faut creer un thread, et le placer dedant...
 
 

Citation :

# //////////// appel de connectURL ////////
#       try {
#         connectURL(url);
#       }
#       catch (IOException e) {
#         System.out.println("IOException " + e);
#         e.printStackTrace();
#       }

n°1203207
elianor
bannie 17 fois
Posté le 20-09-2005 à 12:32:11  profilanswer
 

Zogzog4 a écrit :

Je crois qu'il ne faut pas mettre cette partie dans le CommandAction.
Il me semble qu'il faut creer un thread, et le placer dedant...


 
(joli remontage de tomic)
 
je confirme :o


---------------
JE JE SUIS LIBERTINEEEEEEEEEEE JE SUIS UNE CATINNNNNNNNN §§§§§§§§

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [J2ME] probleme de code réseau

 

Sujets relatifs
J2ME -> Utilisation de KXmlRPC: blocage au 256ème caractère de réponseMulti-CSS, code PHP pour en changer, et le conserver
[php] Probleme de conception - sessions/cookie&coCode anti-popup
Création de macro pour utliser du code vb[Perl] Probleme de fork & serveur socket
Probleme compatibilité W3C XHTML!!! Gros problème site web !!!
[Resolu] Problème de DIV avec un "padding" et un "display: inline;"[PERL] Probleme avec LWP et UserAgent dans PurePerl
Plus de sujets relatifs à : [J2ME] probleme de code réseau


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR