Autore Topic: Mancato refresh di un AsyncTask da server mysql  (Letto 89 volte)

Offline marcolino461

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawey EVA-L09
  • Sistema operativo:
    Windows 10
Mancato refresh di un AsyncTask da server mysql
« il: 05 Dicembre 2017, 21:24:29 CET »
0
Salve a tutti, sto ultimando un progetto per la vendita di alimenti via smartphone. I dati e le immagini provengono da un server mysql e passati con stringhe JSON. Il tutto funziona correttamente, ma quanto modifico, aggiungo, o elimino i dati sul server le stesse modifiche non vengono riflesse nell'app.
E' come se android ignorasse le modifiche effettuate sui server remoto,
Es. di chiamata al server:
Codice (Java): [Seleziona]
DownloadTask downloadTask = new DownloadTask();
downloadTask.execute("http://www.nomeutente.altervista.org/json/category.json");

public class DownloadTask extends AsyncTask<String, Void, String> {
        // dobbiamo dirgli cosa deve fare in background
        @Override

        protected String doInBackground(String... urls) {
            HttpURLConnection httpURLConnection = null;
            String risultato = "";

            URL url;

            try {
                url = new URL(urls[0]);
                httpURLConnection = (HttpURLConnection) url.openConnection();
                InputStream inputStream = httpURLConnection.getInputStream();
                InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
                int dato = inputStreamReader.read();

                while (dato != -1) {
                    char datoCorrente = (char) dato;

                    risultato += datoCorrente;
                    dato = inputStreamReader.read();
                    Log.d("DATO......", ""+risultato);
                }
                return risultato;
            } catch (Exception e) {
                e.printStackTrace();
            }

            return "Qualcosa è andato storto";
        }





        // Evento chiamato quando il processo in background è terminato

        @Override
        protected void onPostExecute(String risultato) {
            // TextView categoryInfo = (TextView) findViewById(R.id.textViewInfo);
            //  categoryInfo.setText("A scelta....");
            Log.d("Lista categorie ", risultato );
            try {
                JSONArray jsonArray = new JSONArray(risultato);

                for (int i = 0; i < jsonArray.length(); i++) {
                    JSONObject jsonToken = jsonArray.getJSONObject(i);

                    int idCategory = jsonToken.getInt("idcategory");
                    int idCustomer = jsonToken.getInt("idcustomer");
                    String description = jsonToken.getString("description");
                    String notes = jsonToken.getString("description");
                    String img = jsonToken.getString("img");


                    idCategoryArrayList.add(idCategory);
                    idCustomerArrayList.add(idCustomer);
                    categoryArrayList1.add(description);
                    notesList.add(notes);
                    imgCategoryArrayList.add(img);

                }
                String listaCategorie = "";
                String res;


                for (int i = 0; i < jsonArray.length(); i++) {
                    JSONObject jsonToken = jsonArray.getJSONObject(i);
                    listaCategorie += jsonToken.getString("idcategory") + " - - - - " + jsonToken.getString("description") + " - - - - " + jsonToken.getString("img") + "\n\r";
                    newCategory = new Category(jsonToken.getString("idcategory"),jsonToken.getString("idcustomer"),jsonToken.getString("description"),jsonToken.getString("notes"),jsonToken.getString("img"));
                    adapter.add(newCategory);

                    Log.d("Lista categorie ", listaCategorie );
                }
                for (int j = 0;j <10;j++){
                    //    Log.d(cat[j][0],cat[j][1] + "\n\r");
                }




            } catch (Exception e) {
                Log.d("E  R  R  O  R ", e.getMessage());
            }

//   Rimettere qui la READING PRODUCT

        }
    }

Questa è la ricezione del json nel logcat
Codice (Java): [Seleziona]
[
{"idcategory":"1","idcustomer":"1","description":"I Nostri Prodotti","notes":"","img":"http:\/\/www.nomeutente.altervista.org\/images\/button_1.png"},
{"idcategory":"2","idcustomer":"1","description":"Offerte speciali","notes":"","img":"http:\/\/www.nomeutente.altervista.org\/images\/button_1.png"},
{"idcategory":"6","idcustomer":"1","description":"Ricette","notes":"","img":"http:\/\/www.nomeutente.altervista.org\/images\/button_1.png"},
{"idcategory":"7","idcustomer":"1","description":"Take Away","notes":"","img":"http:\/\/www.nomeutente.altervista.org\/images\/button_1.png"},
{"idcategory":"8","idcustomer":"1","description":"Delivery","notes":"","img":"http:\/\/www.marconegri.altervista.org\/images\/button_1.png"}
]

Potrebbe sembrare tutto ok. Ma in realtà l'ultimo 'record' cioè il "Delivery" non dovrebbe esistere in quanto eliminato, inoltre, se elimino il file json dal server remoto android continua a leggerlo lo stesso. .............qualche memoria cache ?
Stesso discorso vale per l'aggiornamento delle immagini. Il tutto funzionava perfettamente all'inizio, con i primi dati e le prime immagini, ma quando ho cominciato a modificarli, aggiungerli, o eliminarli sono cominciati i problemi,
Qualche idea ?

Info supplementari
android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "ch.nomeutente.pastificio"
        minSdkVersion 19
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

Offline berpao

  • Utente junior
  • **
  • Post: 89
  • Respect: +5
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Play Store ID:
    Paolo Bersan
Re:Mancato refresh di un AsyncTask da server mysql
« Risposta #1 il: 06 Dicembre 2017, 08:02:33 CET »
0
Ciao, qui su SO qualcuno ha segnalato il tuo stesso problema con HttpUrlConnection(almeno così mi sembra) prova a vedere se risolve anche a te. Alla fine sembra che si risolva impostando

Codice (Java): [Seleziona]
httpURLConnection.setUseCaches(false)
cmq per maggiori dettagli guarda il topic che ti ho linkato

Ciao
P
« Ultima modifica: 06 Dicembre 2017, 08:04:40 CET da berpao »

Offline marcolino461

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawey EVA-L09
  • Sistema operativo:
    Windows 10
Re:Mancato refresh di un AsyncTask da server mysql
« Risposta #2 il: 06 Dicembre 2017, 12:49:40 CET »
0
Ciao. Non ho ancora eseguito il test ma ti ringrazio per il link.
Credo comunque che il problema risieda proprio nella cache.