MokaStar Pubblicato: 14 Dicembre 2010 Segnalazione Share Pubblicato: 14 Dicembre 2010 Ciao, ho un problema nell'esecuzione della mia applicazione realizzata con J2ME sul Nokia N95 (Symbian). In poche parole, se eseguo l'applicazione con il simulatore di Java me SDK 3.0 tuttu funziona, ovvero: dopo l'inserimento di username e password, viene effettuata la connessione alla servlet per la verifica del login e si apre il form successivo(login OK). Se eseguo l'applicazione sul cellulare, dopo l'inserimento di username e password, dopo qualche secondo d'attesa compare il messaggio: ECCEZIONE NON GESTITA, CHIUDERE L'APPLICAZIONE (SI/NO). Come mai accade questo? Bisogna apportare modifiche al codice quando si fa girare il tutto sul cellulare? Ecco il codice: private void connect(String usr, String pwd) { HttpConnection hc = null; InputStream in = null; OutputStream os = null; StringBuffer buffer = new StringBuffer(); try { hc = (HttpConnection)Connector.open(url); hc.setRequestMethod(HttpConnection.POST); hc.setRequestProperty("IF-Modified-Since", "20 Jan 2001 16:19:14 GMT"); hc.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.1"); hc.setRequestProperty("Content-Language", "en-CA"); hc.getRequestProperty(url); hc.getResponseCode(); os = hc.openOutputStream(); //start os.write('1'); os.write('§'); os.flush(); byte postmsg[] = usr.getBytes(); for(int i=0;i<postmsg.length;i++) { os.write(postmsg); } os.write('§'); os.flush(); byte postmsg2[] = pwd.getBytes(); for(int i=0;i<postmsg2.length;i++) { os.write(postmsg2); } os.flush(); //end in = hc.openInputStream(); int contentLength = (int)hc.getLength(); byte[] raw = new byte[contentLength]; int length = in.read(raw); os.close(); in.close(); hc.close(); // Show the response to the user. String s = new String(raw, 0, length); mMessageItem.setText(s); if(s.charAt(0)=='O' && s.charAt(1)=='K') mDisplay.setCurrent(frm2); else mDisplay.setCurrent(mMainForm); } catch (IOException ioe) { mMessageItem.setText(ioe.toString()); mDisplay.setCurrent(mMainForm); } } --------------------- dove: private String url = "http://www.miosito.it/midp/miosito"; --------------------- Qualcuno può aiutarmi?? Vi ringrazio. Link to comment Condividi su altri siti More sharing options...
MokaStar Pubblicato: 14 Dicembre 2010 Autore Segnalazione Share Pubblicato: 14 Dicembre 2010 Aggiungo che nella finestra di "Output - MyApplication (run)" di javame sdk dopo l'esecuzione ci sono i seguenti messaggi: Starting emulator in execution mode Installing suite from: http://127.0.0.1:xxxx/MyApplication.jad Uncaught exception: java.lang.StringIndexOutOfBoundsException - java.lang.String.charAt(), bci=16 - MyMidlet.connect2(), bci=310 - MyMidlet.access$1500(), bci=6 - MyMidlet.run(), bci=32 Credo sia questa l'eccezione non gestita dal cellulare....ma come mai? Qualcuno può aiutarmi ??? Grazie ancora. Link to comment Condividi su altri siti More sharing options...
MokaStar Pubblicato: 15 Dicembre 2010 Autore Segnalazione Share Pubblicato: 15 Dicembre 2010 Nessuno può aiutarmi ? Link to comment Condividi su altri siti More sharing options...
Il.Socio Pubblicato: 15 Dicembre 2010 Segnalazione Share Pubblicato: 15 Dicembre 2010 (modificato) L'errore e' abbastanza esplicativo... Starting emulator in execution mode Installing suite from: http://127.0.0.1:xxxx/MyApplication.jad Uncaught exception: java.lang.StringIndexOutOfBoundsException - java.lang.String.charAt(), bci=16 - MyMidlet.connect2(), bci=310 - MyMidlet.access$1500(), bci=6 - MyMidlet.run(), bci=32 Richiamando il metodo charAt() hai specificato un indice che sfora la dimensione dell'array... P.S. se lo scopo di quel colore azzurrino e' rendere difficoltosa la lettura, per evitare di ricevere aiuto, sei sulla buona strada per riuscirci! Magari prova con il colore bianco la prossima volta, e' ancora piu' difficile da leggere! Modificato 15 Dicembre 2010 da Il.Socio Link to comment Condividi su altri siti More sharing options...
MokaStar Pubblicato: 16 Dicembre 2010 Autore Segnalazione Share Pubblicato: 16 Dicembre 2010 L'errore e' abbastanza esplicativo... Starting emulator in execution mode Installing suite from: http://127.0.0.1:xxxx/MyApplication.jad Uncaught exception: java.lang.StringIndexOutOfBoundsException - java.lang.String.charAt(), bci=16 - MyMidlet.connect2(), bci=310 - MyMidlet.access$1500(), bci=6 - MyMidlet.run(), bci=32 Richiamando il metodo charAt() hai specificato un indice che sfora la dimensione dell'array... P.S. se lo scopo di quel colore azzurrino e' rendere difficoltosa la lettura, per evitare di ricevere aiuto, sei sulla buona strada per riuscirci! Magari prova con il colore bianco la prossima volta, e' ancora piu' difficile da leggere! Ciao, grazie per avermi risposto. Purtroppo sono alle prime armi, potresti modificare la definizione dell'indice del mio codice? Ho fatto delle prove, ma sicuramente non ho modificato correttamente. Grazie ancora! Link to comment Condividi su altri siti More sharing options...
Il.Socio Pubblicato: 16 Dicembre 2010 Segnalazione Share Pubblicato: 16 Dicembre 2010 (modificato) Purtroppo sono alle prime armi, potresti modificare la definizione dell'indice del mio codice? Mi spiace, ma servire la "pappa pronta" non e' il genere di aiuti che io fornisco... Dovrai mettere mano tu al tuo codice. Ho fatto delle prove, ma sicuramente non ho modificato correttamente. Grazie ancora! Hai capito la natura dell'errore? Quali prove hai fatto? Modificato 16 Dicembre 2010 da Il.Socio Link to comment Condividi su altri siti More sharing options...
MokaStar Pubblicato: 16 Dicembre 2010 Autore Segnalazione Share Pubblicato: 16 Dicembre 2010 (modificato) Mi spiace, ma servire la "pappa pronta" non e' il genere di aiuti che io fornisco... Dovrai mettere mano tu al tuo codice. Hai capito la natura dell'errore? Quali prove hai fatto? Allora, ho definito un indice che supera le dimensioni dell'array (questo è l'errore). Quindi mi sono concentrata su questa sezione di codice per le modifiche // Show the response to the user. String s = new String(raw, 0, length); mMessageItem.setText(s); if(s.charAt(0)=='O' && s.charAt(s.length()-1)=='K') mDisplay.setCurrent(frm2); else mDisplay.setCurrent(mMainForm); } catch (IOException ioe) { mMessageItem.setText(ioe.toString()); mDisplay.setCurrent(mMainForm); } } Adesso non esce l'errore nella finestra dell'output dell'sdk...ma accanto al pulsante "connetti" della mia applicazione esce una stringa: OK. Ma non mi permette di visualizzare il form successivo... Qualcosa è cambiato...ma non credo di aver raggiunto la soluzione... La stringa "OK" è ottenuta dal seguente controllo in Servlet.java : boolean ok=checkUser(usr,pwd); if(ok) out.println("OK"); else out.println("nome utente "+usr+" password "+pwd+" errati"); conn.close(); Perchè non procede con il form successivo? definito: mDisplay.setCurrent(frm2); Grazie ancora.. Modificato 16 Dicembre 2010 da MokaStar Link to comment Condividi su altri siti More sharing options...
Il.Socio Pubblicato: 17 Dicembre 2010 Segnalazione Share Pubblicato: 17 Dicembre 2010 (modificato) Perchè non procede con il form successivo? definito: mDisplay.setCurrent(frm2); Vedendo il codice, direi che non procede perche' almeno una di queste condizioni e' falsa... s.charAt(0)=='O' s.charAt(s.length()-1)=='K' quindi viene eseguito il ramo "else" del controllo... mDisplay.setCurrent(mMainForm); Modificato 17 Dicembre 2010 da Il.Socio Link to comment Condividi su altri siti More sharing options...
MokaStar Pubblicato: 17 Dicembre 2010 Autore Segnalazione Share Pubblicato: 17 Dicembre 2010 Vedendo il codice, direi che non procede perche' almeno una di queste condizioni e' falsa... s.charAt(0)=='O' s.charAt(s.length()-1)=='K' quindi viene eseguito il ramo "else" del controllo... mDisplay.setCurrent(mMainForm); Ora funziona soltanto con l'emulatore di java sdk, ma non funziona sull'N95....quando prova a connettersi dice: "eccezione non gestita"... perchè funziona sul pc e sul cell no? questa cosa non la capisco... Link to comment Condividi su altri siti More sharing options...
MokaStar Pubblicato: 17 Dicembre 2010 Autore Segnalazione Share Pubblicato: 17 Dicembre 2010 Ora funziona soltanto con l'emulatore di java sdk, ma non funziona sull'N95....quando prova a connettersi dice: "eccezione non gestita"... perchè funziona sul pc e sul cell no? questa cosa non la capisco... Finalmente ho raggiunto la soluzione...dopo ben 4 giorni Posto il codice: if(s.charAt(0)=='O' && s.charAt(postmsg.length)=='K') mDisplay.setCurrent(mMainForm); else mDisplay.setCurrent(frm2); Finalmente funziona la connessione e il login utente, con succesiva apertura del secondo form. Grazie per i suggerimenti Per ora vado avanti con l'applicazione.... Link to comment Condividi su altri siti More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Accedi Ora