CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: 9mm con ben 3 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 8 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 29 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 3 su 3
Discussione:

errore richiesta al server

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    Nov 2012
    Località
    Valderice
    Messaggi
    24

    Ringraziamenti
    5
    Ringraziato 0 volte in 0 Posts
    Predefinito

    errore richiesta al server

    ciao ragazzi,
    sto sviluppando una applicazione che manda un valore ad un server (con alle spalle un database) e aspetta come risposta altri valori che ovviamente dipendono dal valore in input. Nel mio caso, invio un codice a barre e attendo dal server in risposta il nome del prodotto e il prezzo.
    Ho implementato il tutto tramite http con metodo post, ho creato uno script php sul server che serve come interfaccia e come formato per i dati che scambio utilizzo json. Ho impostato il permesso per connettersi ad internet e per mandare la richiesta al server utilizzo asynctask per evitare l'eccezione...
    Tutto fila liscio, ora il mio problema è come gestire il fatto che un codice a barre non sia presente sul database del server!
    Vi posto il logcat per farvi un'idea dell'errore perchè inserendo un codice a barre non presente ovviamente la mia app crasha.
    codice:
    02-18 10:23:17.251: E/AndroidRuntime(771): FATAL EXCEPTION: AsyncTask #1
    02-18 10:23:17.251: E/AndroidRuntime(771): java.lang.RuntimeException: An error occured while executing doInBackground()
    02-18 10:23:17.251: E/AndroidRuntime(771): 	at android.os.AsyncTask$3.done(AsyncTask.java:299)
    02-18 10:23:17.251: E/AndroidRuntime(771): 	at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
    02-18 10:23:17.251: E/AndroidRuntime(771): 	at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
    02-18 10:23:17.251: E/AndroidRuntime(771): 	at java.util.concurrent.FutureTask.run(FutureTask.java:239)
    02-18 10:23:17.251: E/AndroidRuntime(771): 	at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
    02-18 10:23:17.251: E/AndroidRuntime(771): 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
    02-18 10:23:17.251: E/AndroidRuntime(771): 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
    02-18 10:23:17.251: E/AndroidRuntime(771): 	at java.lang.Thread.run(Thread.java:856)
    02-18 10:23:17.251: E/AndroidRuntime(771): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
    02-18 10:23:17.251: E/AndroidRuntime(771): 	at android.os.Handler.<init>(Handler.java:197)
    02-18 10:23:17.251: E/AndroidRuntime(771): 	at android.os.Handler.<init>(Handler.java:111)
    02-18 10:23:17.251: E/AndroidRuntime(771): 	at android.widget.Toast$TN.<init>(Toast.java:324)
    02-18 10:23:17.251: E/AndroidRuntime(771): 	at android.widget.Toast.<init>(Toast.java:91)
    02-18 10:23:17.251: E/AndroidRuntime(771): 	at android.widget.Toast.makeText(Toast.java:238)
    02-18 10:23:17.251: E/AndroidRuntime(771): 	at es.clientservercom.ClientServerHttpActivity.inviaDati(ClientServerHttpActivity.java:189)
    02-18 10:23:17.251: E/AndroidRuntime(771): 	at es.clientservercom.ClientServerHttpActivity$BackgroundAsyncTask.doInBackground(ClientServerHttpActivity.java:121)
    02-18 10:23:17.251: E/AndroidRuntime(771): 	at es.clientservercom.ClientServerHttpActivity$BackgroundAsyncTask.doInBackground(ClientServerHttpActivity.java:1)
    02-18 10:23:17.251: E/AndroidRuntime(771): 	at android.os.AsyncTask$2.call(AsyncTask.java:287)
    02-18 10:23:17.251: E/AndroidRuntime(771): 	at java.util.concurrent.FutureTask.run(FutureTask.java:234)
    02-18 10:23:17.251: E/AndroidRuntime(771): 	... 4 more
    02-18 10:23:22.412: E/WindowManager(771): Activity es.clientservercom.ClientServerHttpActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{40d1dbd0 V.E..... R.....ID 0,0-320,162} that was originally added here
    02-18 10:23:22.412: E/WindowManager(771): android.view.WindowLeaked: Activity es.clientservercom.ClientServerHttpActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{40d1dbd0 V.E..... R.....ID 0,0-320,162} that was originally added here
    02-18 10:23:22.412: E/WindowManager(771): 	at android.view.ViewRootImpl.<init>(ViewRootImpl.java:354)
    02-18 10:23:22.412: E/WindowManager(771): 	at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:216)
    02-18 10:23:22.412: E/WindowManager(771): 	at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
    02-18 10:23:22.412: E/WindowManager(771): 	at android.app.Dialog.show(Dialog.java:281)
    02-18 10:23:22.412: E/WindowManager(771): 	at android.app.ProgressDialog.show(ProgressDialog.java:116)
    02-18 10:23:22.412: E/WindowManager(771): 	at android.app.ProgressDialog.show(ProgressDialog.java:99)
    02-18 10:23:22.412: E/WindowManager(771): 	at es.clientservercom.ClientServerHttpActivity$BackgroundAsyncTask.onPreExecute(ClientServerHttpActivity.java:128)
    02-18 10:23:22.412: E/WindowManager(771): 	at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
    02-18 10:23:22.412: E/WindowManager(771): 	at android.os.AsyncTask.execute(AsyncTask.java:534)
    02-18 10:23:22.412: E/WindowManager(771): 	at es.clientservercom.ClientServerHttpActivity$1.onClick(ClientServerHttpActivity.java:65)
    02-18 10:23:22.412: E/WindowManager(771): 	at android.view.View.performClick(View.java:4202)
    02-18 10:23:22.412: E/WindowManager(771): 	at android.view.View$PerformClick.run(View.java:17340)
    02-18 10:23:22.412: E/WindowManager(771): 	at android.os.Handler.handleCallback(Handler.java:725)
    02-18 10:23:22.412: E/WindowManager(771): 	at android.os.Handler.dispatchMessage(Handler.java:92)
    02-18 10:23:22.412: E/WindowManager(771): 	at android.os.Looper.loop(Looper.java:137)
    02-18 10:23:22.412: E/WindowManager(771): 	at android.app.ActivityThread.main(ActivityThread.java:5039)
    02-18 10:23:22.412: E/WindowManager(771): 	at java.lang.reflect.Method.invokeNative(Native Method)
    02-18 10:23:22.412: E/WindowManager(771): 	at java.lang.reflect.Method.invoke(Method.java:511)
    02-18 10:23:22.412: E/WindowManager(771): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
    02-18 10:23:22.412: E/WindowManager(771): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
    02-18 10:23:22.412: E/WindowManager(771): 	at dalvik.system.NativeStart.main(Native Method)

  2.  
  3. #2
    Senior Droid L'avatar di freebong


    Registrato dal
    Apr 2011
    Messaggi
    379

    Ringraziamenti
    13
    Ringraziato 28 volte in 27 Posts
    Predefinito

    Quote Originariamente inviato da xyzi
    ciao ragazzi,
    sto sviluppando una applicazione che manda un valore ad un server (con alle spalle un database) e aspetta come risposta altri valori che ovviamente dipendono dal valore in input. Nel mio caso, invio un codice a barre e attendo dal server in risposta il nome del prodotto e il prezzo.
    Ho implementato il tutto tramite http con metodo post, ho creato uno script php sul server che serve come interfaccia e come formato per i dati che scambio utilizzo json. Ho impostato il permesso per connettersi ad internet e per mandare la richiesta al server utilizzo asynctask per evitare l'eccezione...
    Tutto fila liscio, ora il mio problema è come gestire il fatto che un codice a barre non sia presente sul database del server!
    Vi posto il logcat per farvi un'idea dell'errore perchè inserendo un codice a barre non presente ovviamente la mia app crasha.
    02-18 10:23:17.251: E/AndroidRuntime(771): FATAL EXCEPTION: AsyncTask #1
    02-18 10:23:17.251: E/AndroidRuntime(771): java.lang.RuntimeException: An error occured while executing doInBackground()
    02-18 10:23:17.251: E/AndroidRuntime(771): at android.os.AsyncTask$3.done(AsyncTask.java:299)
    02-18 10:23:17.251: E/AndroidRuntime(771): at java.util.concurrent.FutureTask.finishCompletion(F utureTask.java:352)
    02-18 10:23:17.251: E/AndroidRuntime(771): at java.util.concurrent.FutureTask.setException(Futur eTask.java:219)
    02-18 10:23:17.251: E/AndroidRuntime(771): at java.util.concurrent.FutureTask.run(FutureTask.jav a:239)
    02-18 10:23:17.251: E/AndroidRuntime(771): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTas k.java:230)
    02-18 10:23:17.251: E/AndroidRuntime(771): at java.util.concurrent.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1080)
    02-18 10:23:17.251: E/AndroidRuntime(771): at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:573)
    02-18 10:23:17.251: E/AndroidRuntime(771): at java.lang.Thread.run(Thread.java:856)
    02-18 10:23:17.251: E/AndroidRuntime(771): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
    02-18 10:23:17.251: E/AndroidRuntime(771): at android.os.Handler.<init>(Handler.java:197)
    02-18 10:23:17.251: E/AndroidRuntime(771): at android.os.Handler.<init>(Handler.java:111)
    02-18 10:23:17.251: E/AndroidRuntime(771): at android.widget.Toast$TN.<init>(Toast.java:324)
    02-18 10:23:17.251: E/AndroidRuntime(771): at android.widget.Toast.<init>(Toast.java:91)
    02-18 10:23:17.251: E/AndroidRuntime(771): at android.widget.Toast.makeText(Toast.java:238)
    02-18 10:23:17.251: E/AndroidRuntime(771): at es.clientservercom.ClientServerHttpActivity.inviaD ati(ClientServerHttpActivity.java:189)
    02-18 10:23:17.251: E/AndroidRuntime(771): at es.clientservercom.ClientServerHttpActivity$Backgr oundAsyncTask.doInBackground(ClientServerHttpActiv ity.java:121)
    02-18 10:23:17.251: E/AndroidRuntime(771): at es.clientservercom.ClientServerHttpActivity$Backgr oundAsyncTask.doInBackground(ClientServerHttpActiv ity.java:1)
    02-18 10:23:17.251: E/AndroidRuntime(771): at android.os.AsyncTask$2.call(AsyncTask.java:287)
    02-18 10:23:17.251: E/AndroidRuntime(771): at java.util.concurrent.FutureTask.run(FutureTask.jav a:234)
    02-18 10:23:17.251: E/AndroidRuntime(771): ... 4 more
    02-18 10:23:22.412: E/WindowManager(771): Activity es.clientservercom.ClientServerHttpActivity has leaked window com.android.internal.policy.impl.PhoneWindow$Decor View{40d1dbd0 V.E..... R.....ID 0,0-320,162} that was originally added here
    02-18 10:23:22.412: E/WindowManager(771): android.view.WindowLeaked: Activity es.clientservercom.ClientServerHttpActivity has leaked window com.android.internal.policy.impl.PhoneWindow$Decor View{40d1dbd0 V.E..... R.....ID 0,0-320,162} that was originally added here
    02-18 10:23:22.412: E/WindowManager(771): at android.view.ViewRootImpl.<init>(ViewRootImpl.java :354)
    02-18 10:23:22.412: E/WindowManager(771): at android.view.WindowManagerGlobal.addView(WindowMan agerGlobal.java:216)
    02-18 10:23:22.412: E/WindowManager(771): at android.view.WindowManagerImpl.addView(WindowManag erImpl.java:69)
    02-18 10:23:22.412: E/WindowManager(771): at android.app.Dialog.show(Dialog.java:281)
    02-18 10:23:22.412: E/WindowManager(771): at android.app.ProgressDialog.show(ProgressDialog.jav a:116)
    02-18 10:23:22.412: E/WindowManager(771): at android.app.ProgressDialog.show(ProgressDialog.jav a:99)
    02-18 10:23:22.412: E/WindowManager(771): at es.clientservercom.ClientServerHttpActivity$Backgr oundAsyncTask.onPreExecute(ClientServerHttpActivit y.java:128)
    02-18 10:23:22.412: E/WindowManager(771): at android.os.AsyncTask.executeOnExecutor(AsyncTask.j ava:586)
    02-18 10:23:22.412: E/WindowManager(771): at android.os.AsyncTask.execute(AsyncTask.java:534)
    02-18 10:23:22.412: E/WindowManager(771): at es.clientservercom.ClientServerHttpActivity$1.onCl ick(ClientServerHttpActivity.java:65)
    02-18 10:23:22.412: E/WindowManager(771): at android.view.View.performClick(View.java:4202)
    02-18 10:23:22.412: E/WindowManager(771): at android.view.View$PerformClick.run(View.java:17340 )
    02-18 10:23:22.412: E/WindowManager(771): at android.os.Handler.handleCallback(Handler.java:725 )
    02-18 10:23:22.412: E/WindowManager(771): at android.os.Handler.dispatchMessage(Handler.java:92 )
    02-18 10:23:22.412: E/WindowManager(771): at android.os.Looper.loop(Looper.java:137)
    02-18 10:23:22.412: E/WindowManager(771): at android.app.ActivityThread.main(ActivityThread.jav a:5039)
    02-18 10:23:22.412: E/WindowManager(771): at java.lang.reflect.Method.invokeNative(Native Method)
    02-18 10:23:22.412: E/WindowManager(771): at java.lang.reflect.Method.invoke(Method.java:511)
    02-18 10:23:22.412: E/WindowManager(771): at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:793)
    02-18 10:23:22.412: E/WindowManager(771): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:560)
    02-18 10:23:22.412: E/WindowManager(771): at dalvik.system.NativeStart.main(Native Method)

    Gestiscila da php.
    Se la query nn torna nessun risultato invia un codice sempre con json con cui il client Android possa gestire il caso


    Inviato dal mio HTC Desire usando Androidiani App

  4. #3
    Baby Droid


    Registrato dal
    Nov 2012
    Località
    Valderice
    Messaggi
    24

    Ringraziamenti
    5
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Quote Originariamente inviato da freebong Visualizza il messaggio
    Gestiscila da php.
    Se la query nn torna nessun risultato invia un codice sempre con json con cui il client Android possa gestire il caso


    Inviato dal mio HTC Desire usando Androidiani App
    L'avevo pensato anche io, ma modificando lo script php non riesco a risolvere. magari sbaglio qualcosa io.
    Questo è lo script, non fare caso alle righe commentate:
    codice:
    <?php
    mysql_connect("localhost:3306","root","nino");
    mysql_select_db("supermercato");
     
    $q=mysql_query("SELECT prezzo,categoria,descrizione FROM prodotti WHERE barcode='".$_REQUEST['bc']."'");
    
    if (mysql_num_rows($q) == 0) {
            //Nessuna riga trovata
    		$output=array();
            $output["prezzo"]="0.00";
    		$output["categoria"]="null";
    		$output["descrizione"]="null";
        }
    	else
    		$output[]=mysql_fetch_assoc($q);
    //while($e=mysql_fetch_assoc($q))
    //        $output[]=$e;
    
    print(json_encode($output));
     
    mysql_close();
    ?>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy