Autore Topic: problemi di connessione 3g con servizi http  (Letto 357 volte)

Offline pietroconti89

  • Utente normale
  • ***
  • Post: 164
  • Respect: +19
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note 3 N9005
  • Sistema operativo:
    Windows / Mac OSX
problemi di connessione 3g con servizi http
« il: 19 Maggio 2015, 01:09:05 CEST »
0
Salve a tutti , problema banale, eseguo un interrogazione per leggere dei dati da database remoto Mysql , se eseguo il tutto da wifi " rete ADSL " va che una spada, se eseguo con connessione DATI dello smartphone , " NON SEMPRE ", ma a volte va in crash ovviamente senza eseguire quanto richiesto, vi posto il codice java
Codice (Java): [Seleziona]
private class Connection extends AsyncTask<String, Void, String> {
        public Connection() {
        }
        @Override
        protected void onProgressUpdate(Void... values) {
            super.onProgressUpdate(values);
        }

        @Override
        protected String doInBackground(String... arg0) {
            flag = -1;
            ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
            nameValuePairs.add(new BasicNameValuePair("id", QuerySelect));
            try {
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost(SITO+"select_user.php");
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                is = entity.getContent();
                Log.e("pass 1", "connection success ");
            } catch (Exception e) {
                Toast.makeText(getActivity(), "Invalid IP Address",
                        Toast.LENGTH_LONG).show();
            }

            try {
                BufferedReader reader = new BufferedReader
                        (new InputStreamReader(is, "iso-8859-1"), 8);
                StringBuilder sb = new StringBuilder();
                while ((line = reader.readLine()) != null) {
                    sb.append(line + "\n");
                }
                is.close();
                result = sb.toString();
                Log.e("pass 2", "connection success ");
            } catch (Exception e) {
                Log.e("Fail 2", e.toString());
            }

            try {
                JSONArray jArray = new JSONArray(result);
                for (int i = 0; i < jArray.length(); i++) {
                    JSONObject json_data = jArray.getJSONObject(i);
                    Log.i("TEST", "id: " + json_data.getString("id") +
                                    ", id_user: " + json_data.getString("id_user") +
                                    ", imgtop: " + json_data.getString("imgtop")
                    );
                }
                flag = 0;
            } catch (Exception e) {
                flag = 1;
                Log.e("Fail 3", e.toString());
            }
            return null;
        }

idee o consigli ? a occhi e croci la butto li , ci sarà un problema di timeout visto che la connessione dati è più lenta? ma perché va in crash se le eccezioni vengono gestite ?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:problemi di connessione 3g con servizi http
« Risposta #1 il: 19 Maggio 2015, 07:52:53 CEST »
0
La prima cosa, la più fondamentale, è che devi postare il Logcat del crash. Sul LogCat c'è scritto il tipo di crash e quale riga di codice l'ha causato.

Seconda cosa: consiglio molto caldamento di usare una libreria per le connessioni http (tipo okhttp), perchè è ciò che fanno praticamente tutte le app. Riduci il codice a un decimo e ti gestisce in autonomia tutte le casistiche.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline pietroconti89

  • Utente normale
  • ***
  • Post: 164
  • Respect: +19
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note 3 N9005
  • Sistema operativo:
    Windows / Mac OSX
Re:problemi di connessione 3g con servizi http
« Risposta #2 il: 19 Maggio 2015, 09:06:35 CEST »
0
Il problema è  che con l emulatore nn me lo ha mai fatto , me lo fa solo su smartphone , e al momento mi da qualche problema a collegarlo in debug, sul Mac. .. ma vedo di risolvere e faccio quanto mi consigli  ;-)

Post unito: 19 Maggio 2015, 16:59:59 CEST
ciao alla fine il logcat risolve tutti i misteri... e a tal proposito l 'errore esce esattamente qui
Codice (Java): [Seleziona]
try {
                ...........
            } catch (Exception e) {
                Toast.makeText(getActivity(), "Invalid IP Address",
                        Toast.LENGTH_LONG).show();
            }
ora levando il Toast prosegue senza crash inattesi , è difatti assodato che il problema dipende dai cali di linea , ma ora la contro domanda è ... un toast non può essere lanciato in un AsynTask in doInBackground(String... arg0) ?? , può essere eseguito solo in onPostExecute(String result) e onProgressUpdate(Void... values) ?
« Ultima modifica: 19 Maggio 2015, 16:59:59 CEST da pietroconti89, Reason: Merged DoublePost »