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)