Autore Topic: errore parsering  (Letto 991 volte)

Offline marco110

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S4
  • Sistema operativo:
    Windows 7
errore parsering
« il: 10 Novembre 2013, 13:43:45 CET »
0
Ciao a tutti ragazzi, ho un piccolo problema con la mia applicazione, in quanto non riesco ad ottenere le informazioni dal mio database online. Premetto che non ho mai fatto applicazioni del genere ma è abbastanza tempo che le studio. Ho seguito vari tutorial online ma arrivando sempre a vari errori.... Il problema è che cerco di non copiare di punto in bianco ma di capire sempre quello che scrivo o faccio ma qui mi risulta un pochino più complicato, mi affido alla vostra saggezza u.u grazie a chiunque voglia interessarsi ed aiutarmi ^_^

SDK progetto 8 e lo sto testando su un SDK 17,

Codice (Java): [Seleziona]
try{
                        HttpClient httpclient = new DefaultHttpClient();
                        HttpPost httppost = new HttpPost("indirizzo dove è situtato il mio database");
                        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){
                try{
                        //iso-8859-1
                        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());
                }
                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.getInt("id") + ", cognome:" +json_data.getString("cognome")+ ",nome:" + json_data.getInt("nome"));
                                stringaFinale = json_data.getInt("id")+" " + json_data.getString("cognome") + " " + json_data.getInt("nome") + "\n\n";
                        }
                        tv.setText(stringaFinale);
                }catch(JSONException e){
                        Log.e("log_tag", "Error parsing data " + e.toString());
                }
                }else{
                       
                }
                return stringaFinale;

l'errore che mi viene fuori dal logcat è questo:

Error parsing data org.json.JSONException: Value <!-- of type java.lang.String cannot be converted to JSONArray

tutto il codice java è inserito in un  asynctask, naturalmente l'applicazione si dovrebbe collegare tramite php, ora vi posto il codice...
Codice (PHP): [Seleziona]
<?php
        mysql_connect("localhost:3306","root","password");
        mysql_select_db("iscritti");
 
        $q=mysql_query("SELECT * FROM utenti");
        while($e=mysql_fetch_assoc($q))
            $output[]=$e;
 
        print(json_encode($output));
 
        mysql_close();

        ?>

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:errore parsering
« Risposta #1 il: 10 Novembre 2013, 14:41:01 CET »
0
Posta anche il json generato, perché l'errore dice che stai sbagliando a fare il parsing e serve sapere come é fatto.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline marco110

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S4
  • Sistema operativo:
    Windows 7
Re:errore parsering
« Risposta #2 il: 10 Novembre 2013, 15:24:47 CET »
0
il json generato da php è il seguente:
[{"id":"1","nome":"marco","cognome":"pic"},{"id":"2","nome":"Emanuela","cognome":"pic"}]

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:errore parsering
« Risposta #3 il: 10 Novembre 2013, 16:05:27 CET »
0
Prova a far stampare result nel LogCat subito prima di creare il JSONArray.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline marco110

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S4
  • Sistema operativo:
    Windows 7
Re:errore parsering
« Risposta #4 il: 10 Novembre 2013, 18:00:59 CET »
0
ottima idea non ci avevo pensato XD scusa il ritardo ma non sono potuto stare vicino al pc per i vari impegni...  ecco il LogCat subito prima del JSON...:

ho aggiunto l'immagine con il LogCat effettivamente sembra incasinato... mi affido a voi guru... grazie per l'interessamento bradipao ^_^
(io pensavo di dover ricevere con il LogCat solamente la stringa JSON e non tutto..., nelle varie prove effettuate precedentemente adesso capisco perché mi veniva stampato solo un <!-- era la prima riga ahahahahha povero me XD)
« Ultima modifica: 10 Novembre 2013, 18:05:36 CET da marco110 »

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:errore parsering
« Risposta #5 il: 10 Novembre 2013, 18:28:40 CET »
0
Hai praticamente già centrato il problema: questo "result" non è un JSON valido, ed è per quello che ti genera l'eccezione.

Come giustamente dici dovrebbe arrivarti solo la stringa JSON, da [ a ] inclusi.

Il problema è che "sembra" tu stia usando qualche framework o template, che ti ingloba gli output dentro una pagina HTML. Non è un problema specifico di PHP perchè ci ho già generato in passato risposte JSON.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline marco110

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S4
  • Sistema operativo:
    Windows 7
Re:errore parsering
« Risposta #6 il: 10 Novembre 2013, 18:32:48 CET »
0
Uhm potrebbe dipendere dal fatto che sto facendo girare php in locale con xampp? Anche se credo sia una domanda abbastanza stupida...
(Non credo dipenda da php, quando apro la pagina da un browser mi viene stampato a video la stringa in JSON dunqueque il problema è da ricercare sotto java (android)... io sulla parte net di android sono scarsetto xD ripeto che questa è la prima applicazione xD) qualcuno ha trovato errori o imprecisioni nella parte java???

Inviato dal mio GT-N8000 utilizzando Tapatalk
« Ultima modifica: 10 Novembre 2013, 18:45:09 CET da marco110 »

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:errore parsering
« Risposta #7 il: 10 Novembre 2013, 18:43:03 CET »
0
Il problema è quasi certamente in xampp, per cui puoi provare a richiamare lo stesso url da un browser e vedere la risposta (ma fai visualizza codice sorgente, altrimenti vedi solo il body della pagina).
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline marco110

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S4
  • Sistema operativo:
    Windows 7
Re:errore parsering
« Risposta #8 il: 10 Novembre 2013, 18:46:03 CET »
0
Anticipato di poco ahahaahaaha :p ora però provo a visualizzare come hai suggerito te ovvero il codice sorgente come da te suggerito ^_^ grazie...

rieccomi, ho fatto come mi hai suggerito e per vedere il codice sorgente ho cliccato con il destro su una parte bianca della pagina ed ho selezionato dal menu la voce HTML il risultato è questo:

<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        [{"id":"1","nome":"marco","cognome":"pic"},{"id":"2","nome":"Emanuela","cognome":"pic"}]    </body>
</html>

effettivamente è lo stesso che riceve android.... come dovrei muovermi ora? grazie per i vari suggerimenti ^_^

Ho provato a caricare il tutto su altervista in modo da poter provare il tutto non in locale ma la cosa non cambia sempre lo stesso errore, sempre lo stesso problema...

Inviato dal mio GT-N8000 utilizzando Tapatalk
« Ultima modifica: 10 Novembre 2013, 20:39:29 CET da marco110 »

Offline marco110

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S4
  • Sistema operativo:
    Windows 7
Re:errore parsering
« Risposta #9 il: 11 Novembre 2013, 22:30:39 CET »
0
Problema risolto xD se vi dico cos' era mi menate ahahahahahahahahaha dopo posto la soluzione e chiudo il post ri grazio comunque bradipao per l'interessamento e l'aiuto ^_^

Scusate se scrivo solo ora ma tra lavoro e vari impegni sono stato poco al pc.... Il problema era nel file php... in effetti prima del codice php c'era del codice html impostato automaticamente da netbeans, in realtà sbagliavo io a selezionare il file php che mi doveva generare così che mi inseriva in automatico tutto il codice html xD che salamo che sono ahahahahahaha grazie a tutti e scusate per la nabbagine :-)

Inviato dal mio GT-N8000 utilizzando Tapatalk
« Ultima modifica: 13 Novembre 2013, 17:41:13 CET da marco110 »