Autore Topic: Problema con invio dati a PHP Json - APP troppo veloce?  (Letto 729 volte)

Offline schumy79

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2 - GT-I9100
  • Sistema operativo:
    Win7 X64
Problema con invio dati a PHP Json - APP troppo veloce?
« il: 08 Ottobre 2012, 12:05:52 CEST »
0
Ciao,
ho un dannato problema con invio dei dati da una listview (tramite pulsante) a una pagina PHP su altervista che decodifica un JSON. Il flusso dell'asynktask è il seguente:

  • Attivazione Progress Dialog
  • Cancellazione Dati sul DB
  • Iterazione sulla listview e passaggio di ogni singolo record a pagina PHP via JSON
  • Aggiornamento della Progress Dialog nel caso di inserimento ok, altrimenti si esce dall'iterazione

Il problemi sono:

  • Cancella, itera completamente ma non aggiorna il DB e il progress Dialog rimane a 0 e il toast mi da OK.
  • Cancella, itera completamente ma aggiorna parzialmente il DB e il toast mi da OK
  • Non Cancella, itera completamente ma aggiorna parzialmente o completamente il DB e il toast mi da OK
  • Tutto funziona correttamente...

Questi sono i codici, non so più dove sbattere la testa  :-( :-( :-( Help me please. Grazie in anticipo.

Asynktask

Codice (Java): [Seleziona]
public void save_formazione(View view) {

                tot_t = Myappdata.get_tot_t();
                tot_p1 = Myappdata.get_tot_p1();
                tot_p2 = Myappdata.get_tot_p2();
                tot_out = Myappdata.get_tot_out();

                if (tot_t == 11 && tot_p1 == 4 && tot_p2 == 3) {

                        formazione = Myappdata.get_array_formazione();

                        new send_formazione().execute();

                } else {

                        if (tot_t != 11) {

                                Toast.makeText(getApplicationContext(),
                                                "Verificare numero giocatori titolari",
                                                Toast.LENGTH_SHORT).show();
                        }

                        if (tot_p1 != 4) {
                                Toast.makeText(getApplicationContext(),
                                                "Verificare numero giocatori in panchina",
                                                Toast.LENGTH_SHORT).show();
                        }

                        if (tot_p2 != 3) {
                                Toast.makeText(getApplicationContext(),
                                                "Verificare numero giocatori in panchina 2",
                                                Toast.LENGTH_SHORT).show();
                        }

                        listview.refreshDrawableState();

                }

        }

        @Override
        protected Dialog onCreateDialog(int id) {
                switch (id) {
                case progress_bar_type: // we set this to 0
                        pDialog = new ProgressDialog(this);
                        pDialog.setMessage("Caricamento formazione in corso. Attendere...");
                        pDialog.setIndeterminate(false);
                        pDialog.setMax(100);
                        pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                        pDialog.setCancelable(true);
                        pDialog.show();
                        return pDialog;
                default:
                        return null;
                }
        }

        private class send_formazione extends AsyncTask<Void, Integer, String> {

                @Override
                protected void onPreExecute() {
                        super.onPreExecute();
                        showDialog(progress_bar_type);
                }

                @Override
                protected String doInBackground(Void... list) {

                        Boolean deleted = del_ultima_form.del_ultima_formazione(
                                        Integer.valueOf(Myappdata.get_id_current_game()),
                                        Integer.valueOf(Myappdata.get_id_team()));

                        if (deleted == true) {

                                for (int i = 0; i < formazione.size(); i++) {

                                        row_formazione = Myappdata.get_row_id(i);

                                        Boolean inserted = send_formazione.send_formazione(
                                                        row_formazione, i);

                                        if (inserted == true) {

                                                progress = i + (i * 4);
                                                publishProgress(progress);

                                        } else {
                                                Myappdata.clear_formazione();
                                                break;
                                        }

                                        try {
                                                Thread.sleep(3000);
                                        } catch (InterruptedException e) {
                                                e.printStackTrace();
                                        }

                                }
                        } else {

                        }
                        return "uploaded";
                }

                @Override
                protected void onProgressUpdate(Integer... progress) {
                        pDialog.setProgress(progress[0]);
                }

                @Override
                protected void onPostExecute(String result) {
                        // TODO Auto-generated method stub

                        Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT)
                                        .show();

                        if (result.equals("uploaded")) {

                                mydb.open();
                                mydb.updatedforminserted(1, 1);
                                mydb.close();
                                dismissDialog(progress_bar_type);

                        }
                        Myappdata.clear_formazione();
                        Load_insert_formazione.this.finish();
                }

        }

SendFormazioneToWeb
Codice (Java): [Seleziona]
public class Send_formazione_to_web {

        private static String url = "http://xyz";
        InputStream is = null;
        // String result = "";
        String name_giornata = null;
        Context mContext;
        private int TIMEOUT_MILLISEC = 20000;
        private MyAppData Myappdata;
        private MyDatabase mydb;
        private String result;

        public Send_formazione_to_web(Context ctx) {
                mContext = ctx;
        }

        public Boolean send_formazione(Load_insert_formazione_class formazione,
                        int id) {

                Myappdata = (MyAppData) mContext.getApplicationContext();
                mydb = new MyDatabase(mContext.getApplicationContext());

                try {
                        JSONObject json = new JSONObject();
                        json.put("calciatore", formazione.get_calciatore());
                        json.put("ruolo", formazione.get_ruolo());
                        json.put("stato", formazione.get_stato());
                        json.put("giornata",
                                        String.valueOf(Myappdata.get_id_current_game()));
                        json.put("id_fantateam", Myappdata.get_id_team());
                        mydb.open();
                        json.put("fantateam", mydb.single_fantateam_by_id(Integer
                                        .valueOf(Myappdata.get_id_team())));
                        mydb.close();
                        HttpParams httpParams = new BasicHttpParams();
                        HttpConnectionParams.setConnectionTimeout(httpParams,
                                        TIMEOUT_MILLISEC);
                        HttpConnectionParams.setSoTimeout(httpParams, TIMEOUT_MILLISEC);
                        HttpClient client = new DefaultHttpClient(httpParams);
                        HttpPost request = new HttpPost(url);
                        request.setEntity(new ByteArrayEntity(json.toString().getBytes(
                                        "UTF8")));
                        request.setHeader("json", json.toString());
                        HttpResponse response = client.execute(request);
                        HttpEntity entity = response.getEntity();
                        if (entity != null) {
                                InputStream instream = entity.getContent();
                                // result = restclient.getconvertdata(instream);

                                BufferedReader reader = new BufferedReader(
                                                new InputStreamReader(instream, "utf-8"), 8);
                                StringBuilder sb = new StringBuilder();
                                String line = null;
                                while ((line = reader.readLine()) != null) {
                                        sb.append(line);
                                }
                                instream.close();

                                result = sb.toString();

                                if (result.equals("OK")) {
                                        return true;
                                } else {
                                        return false;
                                }
                        } else {
                                return false;

                        }
                } catch (Exception e) {
                        return false;
                }

        }
}

DeleteFormazioneFromWeb

Codice (Java): [Seleziona]
public class Delete_ultima_formazione_from_web {

        private static String url = "http://xyz";
        InputStream is = null;
        String result = "";
        String name_giornata = null;
        Context mContext;
        private int TIMEOUT_MILLISEC = 20000;
        private MyAppData Myappdata;

        public Delete_ultima_formazione_from_web(Context ctx) {
                mContext = ctx;
        }

        public Boolean del_ultima_formazione(int giornata, int id) {

                Myappdata = (MyAppData) mContext.getApplicationContext();
                try {
                        JSONObject json = new JSONObject();
                        json.put("giornata",
                                        String.valueOf(Myappdata.get_id_current_game()));
                        json.put("id_fantateam", Myappdata.get_id_team());
                        HttpParams httpParams = new BasicHttpParams();
                        HttpConnectionParams.setConnectionTimeout(httpParams,
                                        TIMEOUT_MILLISEC);
                        HttpConnectionParams.setSoTimeout(httpParams, TIMEOUT_MILLISEC);
                        HttpClient client = new DefaultHttpClient(httpParams);
                        HttpPost request = new HttpPost(url);
                        request.setEntity(new ByteArrayEntity(json.toString().getBytes(
                                        "UTF8")));
                        request.setHeader("json", json.toString());
                        HttpResponse response = client.execute(request);
                        HttpEntity entity = response.getEntity();
                        if (entity != null) {

                                return true;
                        } else {
                                return false;

                        }
                } catch (Throwable t) {
                        return false;
                }
        }
}

Offline schumy79

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2 - GT-I9100
  • Sistema operativo:
    Win7 X64
Re:Problema con invio dati a PHP Json - APP troppo veloce?
« Risposta #1 il: 09 Ottobre 2012, 10:23:08 CEST »
0
nessuna idea?  :'(