Autore Topic: Errore du device per chiamata HttpPost (su AVD funziona)  (Letto 619 volte)

Offline GabryOne

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Alcatel One Touch Star
  • Sistema operativo:
    Windows 7 64bit - Android Developer Tools Build: v22.0.5-757759
Errore du device per chiamata HttpPost (su AVD funziona)
« il: 01 Settembre 2013, 02:54:33 CEST »
0
Salve a tutti, sono un novello sia di questo forum che della programmazione java in generale.
Devo recuperare un file XML da un mio sito internet.
Ho trovato questo metodo che mi permette anche di passare una lista di parametri e mi che restituisce il risultato del server.

Codice (Java): [Seleziona]
        public void GetDataXML() {
               
            // Create a new HttpClient and Post Header
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://www.miodominio.it/getxml.asp");
           
            try {
               
                // Add your data
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
                nameValuePairs.add(new BasicNameValuePair("email", "email@dominio.com"));
                nameValuePairs.add(new BasicNameValuePair("password", "miapassword"));
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
               
                // Execute HTTP Post Request
                HttpResponse response = httpclient.execute(httppost);
               
                StringBuilder xml;     
                xml = inputStreamToString(response.getEntity().getContent());
                System.out.println(xml);
               
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
            } catch (IOException e) {
                // TODO Auto-generated catch block
            }
           
        }      

Sul PC su una AVD funziona, sui miei due dispositivi no. Sui dispositivi da il solito messaggio di crash "L'applicazione App233 si è bloccata." e posso solo terminarla.

Progetto:
Min. Req. SDK: API 9 Android 2.3
Target SDK: API 9 Android 2.3
Compile with: API 10 Android 2.3.3

AVD: Android 2.3.3 API Level 10 (funziona!)
Samsung Galaxy W: Android 4.0.3 (non funziona)
Alcatel One Touch Star: Android 4.1.1 (non funziona)

Quale potrebbe essere il problema?

Grazie,
Gabriele
« Ultima modifica: 01 Settembre 2013, 02:58:12 CEST da GabryOne »

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 du device per chiamata HttpPost (su AVD funziona)
« Risposta #1 il: 01 Settembre 2013, 08:53:24 CEST »
0
Per fare il debug degli errori devi aprire il pannello del LogCat e cercare le righe con la dicitura ERROR relative alla tua applicazione. Nei messaggi trovi la causa dell'errore.

Però se posso azzardare un'ipotesi, anche senza vedere il LogCat direi che è il classico NetworkOnMainThreadException, cioè esegui connessioni di rete nel thread principale, cosa che è vietata da sempre, ma segnalata come errore solo nelle versioni più recenti di Android.

Questa è la sezione introduttiva alla programmazione Android dove spiega come impostare correttamente le connessioni di rete:
Connecting to the Network | Android Developers
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline GabryOne

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Alcatel One Touch Star
  • Sistema operativo:
    Windows 7 64bit - Android Developer Tools Build: v22.0.5-757759
Re:Errore du device per chiamata HttpPost (su AVD funziona)
« Risposta #2 il: 02 Settembre 2013, 18:27:16 CEST »
0
Grazie per la dritta. Avevi ragione. Ho trasferito la richiesta http post in un AsyncTask e ora funziona.
In questo modo è perfetto. Ho provato anche a farla crashare inviando la richiesta http di continuo ma sembra che l'applicazione le esegua tutte senza problemi. Non ho capito se le mette in coda una dietro l'altra o se le avvia tutte in parallelo ma per il momento non mi interessa.
Ho impiegato un weekend per capire il funzionamento ma ci sta, per uno alle prime armi come me. Grazie ancora!

Sai per caso se c'è un limite sui task asincroni? Es. max 100 task o cose del genere? Ovviamente un limite sarà la memoria...

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 du device per chiamata HttpPost (su AVD funziona)
« Risposta #3 il: 02 Settembre 2013, 19:06:24 CEST »
0
Sai per caso se c'è un limite sui task asincroni? Es. max 100 task o cose del genere? Ovviamente un limite sarà la memoria...

L'implementazione di AsyncTask ha avuto cambiamenti relativamente notevoli nel tempo. Alle origini eseguiva un task alla volta da una coda, poi ai tempi di android 2.x il default era l'esecuzione in parallelo dei task da un pool di 20 (se non ricordo male). Però in realtà la necessità di eseguire in parallelo dei task è veramente rara per questo genere di utilizzi, per cui adesso il default è tornato all'esecuzione in serie con l'opzione di fare tutto in parallelo.

Ho impiegato un weekend per capire il funzionamento ma ci sta, per uno alle prime armi come me. Grazie ancora!

Dovevi scrivere che ci hai messo solo un weekend.  ;-) Non ho minimamente idea del tuo livello, ma se già padroneggi il tutto sei sopra la media dei frequentatori del forum, che in genere sono più alle prime armi.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline GabryOne

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Alcatel One Touch Star
  • Sistema operativo:
    Windows 7 64bit - Android Developer Tools Build: v22.0.5-757759
Re:Errore du device per chiamata HttpPost (su AVD funziona)
« Risposta #4 il: 03 Settembre 2013, 00:06:02 CEST »
0
Beh allora grazie. Spero di continuare così.  ;-)