Autore Topic: Connessione tra Mysql remoto e Android  (Letto 1197 volte)

Offline tirofijo

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
Connessione tra Mysql remoto e Android
« il: 30 Ottobre 2012, 15:57:48 CET »
0
Salve a tutti, sono nuovo di qui e mi sono da poco avvicinato al mondo Android. Vi ringrazio anticipatamente per l'aiuto. Stavo cercando, di provare un piccolo esempio per recuperare i dati in remoto da un db Mysql, tramite Json. Ho creato un file php, dove viene stampato il contenuto della tabella ed ho creato un'attività lato Android, per recuperare i dati, riprendendo un tutorial presente in rete:

Codice (Java): [Seleziona]
public class MainActivity extends ListActivity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                String result = null;
                InputStream is = null;
                StringBuilder sb=null;
                ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
               
               
                try{
                        HttpClient httpclient = new DefaultHttpClient();
                        HttpPost httppost = new HttpPost("http://localhost/json.php");
                 httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                        HttpResponse response = httpclient.execute(httppost);
                        HttpEntity entity = response.getEntity();
                        is = entity.getContent();
                }catch(Exception e){
                        Log.e("log_tag", "Error in http connection"+e.toString());
                }
       
               
                try{
                        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
                        sb = new StringBuilder();
                        sb.append(reader.readLine() + "\n");
                        String line="0";
             
                        while ((line = reader.readLine()) != null) {
                                sb.append(line + "\n");
                        }
                       
                        is.close();
                        result=sb.toString();
                       
                }catch(Exception e){
                        Log.e("log_tag", "Error converting result "+e.toString());
                }

               
                int id;
                String cat
                try{
                JSONArray jArray = new JSONArray(result);
        JSONObject json_data=null;
       
        for(int i=0;i<jArray.length();i++){
                                json_data = jArray.getJSONObject(i);
                                id=json_data.getInt("Codice");
                                cat=json_data.getString("Descrizione");
        }
       
                }catch(JSONException e1){
                        Toast.makeText(getBaseContext(), "No Food Found", Toast.LENGTH_LONG).show();
                }catch (ParseException e1){
                        e1.printStackTrace();
                }
        }
}

L'applicazione, purtroppo si chiude in maniera anomale e ricevo questa sfilza di errori, ma non riesco a capire dove sia il problema. Mi sapreste dare qualche dritta? Grazie mille!

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:Connessione tra Mysql remoto e Android
« Risposta #1 il: 30 Ottobre 2012, 16:51:21 CET »
0
Togli la riga
Codice (Java): [Seleziona]
setContentView(R.layout.activity_main);in questo modo viene utilizzato il layout di default della classe ListActivity; che contiene una ListView con id android.R.id.list.

Infatti l'errore che hai dice che non la trova:
Codice (Java): [Seleziona]
Unable to start activity ComponentInfo{com.example.prova/com.example.prova.MainActivity}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'

Offline tirofijo

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
Re:Connessione tra Mysql remoto e Android
« Risposta #2 il: 31 Ottobre 2012, 10:04:01 CET »
0
Quel errore è andato via, ma continuo ad avere la sfiliza di errori. Potrebbe essere che operazioni di questo genere non possono essere fatte nel thread principale?

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:Connessione tra Mysql remoto e Android
« Risposta #3 il: 31 Ottobre 2012, 10:28:19 CET »
0
Quel errore è andato via, ma continuo ad avere la sfiliza di errori. Potrebbe essere che operazioni di questo genere non possono essere fatte nel thread principale?
Il logcat è nostro amico, postalo  :-P

Offline tirofijo

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
Re:Connessione tra Mysql remoto e Android
« Risposta #4 il: 31 Ottobre 2012, 10:49:28 CET »
0
Ah ok, scusami, avevo dimenticato di allegarlo.

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:Connessione tra Mysql remoto e Android
« Risposta #5 il: 31 Ottobre 2012, 11:02:18 CET »
0
Ah ok, scusami, avevo dimenticato di allegarlo.
Figurati.
A me sembra che hai un problema di connessione di qualche tipo:
Codice (Java): [Seleziona]
10-31 08:59:42.125: E/log_tag(644): Error in http connectionandroid.os.NetworkOnMainThreadExceptionMa guardando velocemente il codice non vedo da cosa potrebbe dipendere.
Prova a vedere se questo articolo può venirti in aiuto.

Offline tirofijo

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
Re:Connessione tra Mysql remoto e Android
« Risposta #6 il: 31 Ottobre 2012, 15:16:23 CET »
0
Perfetto, grazie per l'articolo, pare risolto il problema. Finalmente recupera i dati, era proprio per la faccenda del thread principale :)
Grazie mille!