Autore Topic: org.json.JSONException: End of input at character 0 of  (Letto 881 volte)

Offline saymon92

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
org.json.JSONException: End of input at character 0 of
« il: 18 Dicembre 2014, 20:27:55 CET »
0
Ciao a tutti,
è la prima volta che scrivo nel forum quindi mi scuso già se sbaglio qualcosa :-P

Sto sviluppando un applicazione che si connette a un server remoto per poi caricare su di essa i dati (tramite Json).
E' andato sempre tutto bene fino a quando mi è uscito questo errore:
org.json.JSONException: End of input at character 0 of.
In pratica non riuscivo più a visualizzare i dati sull'app, nonostante la connessione al database andasse a buon fine.
Dopo qualche ora in cui ho sbattuto la testa per trovare una soluzione ho provato a far ripartire la mia applicazione come era originariamente e l'errore è sparito; per questo non riesco a pubblicare il LogCat perchè ora non ha nessun errore.

Ora vi posto il codice di connessione:
Codice (Java): [Seleziona]
private class HttpGetTask extends AsyncTask<String,String,String> {

        @Override
        protected String doInBackground(String... params) {
            String result = "";
            String stringaFinale = "";
            ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
            nameValuePairs.add(new BasicNameValuePair("idnomerichiesto","1"));
            InputStream is = null;

            //http post
            try{

                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost("http://192.168.1.100:80/short_sistop.php");
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                is = entity.getContent();
            }catch(Exception e){
                Log.e("TEST", "Errore nella connessione http " + e.toString());
            }
            if(is != null){
                //converto la risposta in stringa
                try{
                    BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
                    StringBuilder sb = new StringBuilder();
                    String line = null;
                    while ((line = reader.readLine()) != null) {
                        sb.append(line + "\n");
                    }
                    is.close();

                    result=sb.toString();
                }catch(Exception e){
                    Log.e("TEST", "Errore nel convertire il risultato "+e.toString());
                }

                System.out.println(result);

                //parsing dei dati arrivati in formato json
                try{
                    JSONArray jArray = new JSONArray(result);
                    array=new String[jArray.length()];
                    for(int i=0;i<jArray.length();i++){
                        JSONObject json_data = jArray.getJSONObject(i);
                        Log.i("TEST","id: "+json_data.getInt("id")+
                                        ", nome: "+json_data.getString("nome")+
                                        ", azienda_produttrice: "+json_data.getString("azienda_produttrice")
                        );
                        //array per i vari cognomi che po metto nell'adapter
                        array[i]= json_data.getString("nome");
                        stringaFinale = stringaFinale + " "+ json_data.getInt("id") + " " + json_data.getString("nome") + " " + json_data.getString("azienda_produttrice") + "\n\n";
                    }
                    stringAdapter=new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_list_item_1,array);
                }
                catch(JSONException e){
                    Log.e("log_tag", "Error parsing data "+e.toString());
                }
            }
            else{//is è null e non ho avuto risposta

            }

            return stringaFinale;

        }

        @Override
        protected void onProgressUpdate(String... values) {

        }

        @Override
        protected void onPostExecute(String result) {
            listView_SitOp.setAdapter(stringAdapter);
        }
    }

Vorrei sapere come mai è saltato fuori l'errore è senza far nulla si è risolto tutto...

Grazie

Post unito: 18 Dicembre 2014, 20:37:18 CET
Ho appena scoperto che il problema avviene (credo) quando la connessione è più veloce. IO faccio il debug direttamente sul dispositivo, se mi connetto alla rete tramite wifi funziona tutto, mentre se utilizzo il 3g del telefono cè l'errore ???
« Ultima modifica: 18 Dicembre 2014, 20:37:23 CET da saymon92, Reason: Merged DoublePost »

Offline tonno16

  • Utente storico
  • *****
  • Post: 1228
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:org.json.JSONException: End of input at character 0 of
« Risposta #1 il: 19 Dicembre 2014, 00:01:06 CET »
0
Consiglio di usare una qualsiasi libreria. È sicuramente migliore di ogni codice per un semplice motivo; viene costantemente aggiornata da svariate persone. Invece il codice che scrivi te lo sai solo tu e all'apparenza funziona ma magari ogni tanto fa cilecca.

Io uso asynkhttp di loopj. 3 righe di codice e hai tuo json

Offline saymon92

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
Re:org.json.JSONException: End of input at character 0 of
« Risposta #2 il: 19 Dicembre 2014, 00:10:36 CET »
0
Forse è perche sto tentando di accede al localhost da una rete esterna alla mia, mentre quando accedo dalla rete interna (tramite wifi) va tutto bene?

Per favore aiutatemi

Offline tonno16

  • Utente storico
  • *****
  • Post: 1228
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:org.json.JSONException: End of input at character 0 of
« Risposta #3 il: 19 Dicembre 2014, 00:16:49 CET »
0
Bhe. Non puoi accedere w locale host se non hai abilitato le porte disattivato il firewall e settato le porte

Offline saymon92

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
Re:org.json.JSONException: End of input at character 0 of
« Risposta #4 il: 19 Dicembre 2014, 00:54:01 CET »
0
infatti penso sia quello il problema... grazie mille

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:org.json.JSONException: End of input at character 0 of
« Risposta #5 il: 19 Dicembre 2014, 08:11:48 CET »
0
Se devi testare la connettività della rete, non farlo attraverso l'app. Prova nel browser del terminale, così escludi con certezza errori di codice. Una volta che riesci a vedere il file JSON nel browser del terminale, puoi procedere con l'app.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store