Autore Topic: Problema di connessione quando cambio API 7 -> API 17  (Letto 2233 volte)

Offline Ivan86

  • Utente junior
  • **
  • Post: 139
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S II
  • Sistema operativo:
    Windows 7
Problema di connessione quando cambio API 7 -> API 17
« il: 24 Marzo 2013, 20:57:03 CET »
0
Ciao a tutti.

Anni fa ho sviluppato una app con le API 7.
Vedendo gli aggiornamenti mi sono scaricato la versione 17.
Solo che con questa non riesco più ad accedere facendo login.

In pratica nella prima activity prelevo id e password connettendomi in HttpClient e mi sposto in un'altra activity contenente una mappa (per ora aggiornata ancora alla v1).
L'errore del LogCat è il seguente:
Codice: [Seleziona]
03-24 19:47:38.655: E/Trace(1046): error opening trace file: No such file or directory (2)
03-24 19:47:44.065: E/log_REMOTO(1046): Errore nella connessione HTTP: android.os.NetworkOnMainThreadException
03-24 19:47:44.097: E/log_REMOTO(1046): Errore nella conversione del risultato: java.lang.NullPointerException: lock == null
03-24 19:47:44.097: E/log_REMOTO(1046): Errore json: org.json.JSONException: End of input at character 0 of

Perchè se metto le API=7 funziona e se metto le API=17 non mi si connette?

grazie

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:Problema di connessione quando cambio API 7 -> API 17
« Risposta #1 il: 24 Marzo 2013, 23:10:19 CET »
0
Citazione
Errore nella connessione HTTP: android.os.NetworkOnMainThreadException
Non puoi effettuare operazioni bloccanti sull'ui thread come una chiamata http.
Da Honeycomb in poi, se ci provi sollevi l'eccezione di cui sopra  :-P

Offline Ivan86

  • Utente junior
  • **
  • Post: 139
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S II
  • Sistema operativo:
    Windows 7
Re:Problema di connessione quando cambio API 7 -> API 17
« Risposta #2 il: 25 Marzo 2013, 09:09:24 CET »
0
Ok, grazie.

Quindi adesso come dovrei fare se non posso più utilizzare una httpClient per passare da una activity ad un'altra?
Questo è il mio codice attuale:

Codice (Java): [Seleziona]
    public void onClick(View view) {
       
        Boolean f = false;
        EditText txtmail = (EditText)findViewById(R.id.txt_username);
        String mail = txtmail.getText().toString();
        EditText txtpass = (EditText)findViewById(R.id.txt_password);
        String pas = txtpass.getText().toString();
       
        String result = "";
        ArrayList<NameValuePair> dati = new ArrayList<NameValuePair>();
        dati.add(new BasicNameValuePair("email",mail));
        dati.add(new BasicNameValuePair("password",pas));
        InputStream is = null;
               
               
        try{
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost("http://www.sito.it/android/login.php");
                httppost.setEntity(new UrlEncodedFormEntity(dati));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                is = entity.getContent();
             
            }catch(Exception e){
                Log.e("log_REMOTO", "Errore nella connessione HTTP: "+e.toString());
                Toast.makeText(this, "Connessione non riuscita", Toast.LENGTH_SHORT).show();
           }
             
        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("log_REMOTO", "Errore nella conversione del risultato: "+e.toString());
           }
       
        //paring data
               
        try{
            JSONArray jArray = new JSONArray(result);
            for(int i=0;i<jArray.length();i++){
                    JSONObject json_data = jArray.getJSONObject(i);
                    utente = json_data.getInt("idu");
                   
            }            
        }catch(JSONException e1){
                Log.e("log_REMOTO", "Errore json: "+e1.toString());
                f = true;
            }catch (Exception e1){
                Log.e("log_REMOTO", "Errore JSON: "+e1.toString());
                e1.printStackTrace();  
            }
       
        if (f == true){
                Toast.makeText(this, "E-mail o Password errati", Toast.LENGTH_SHORT).show();
        }else{
               
                        i = new Intent(getApplicationContext(), MappaActivity.class);
                        String pkg=getPackageName();   
                        i.putExtra(pkg+".myInt", utente);
                        startActivity(i);
               
        }
           
    }

Dovendo utilizzare la v2 delle mappe di google (che se ho ben capito necessitano delle API17) non posso tornare indietro alla gingerbread

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:Problema di connessione quando cambio API 7 -> API 17
« Risposta #3 il: 25 Marzo 2013, 09:11:50 CET »
0
Quindi adesso come dovrei fare se non posso più utilizzare una httpClient per passare da una activity ad un'altra?

Sono due cose distinte.

Quello che è necessario fare (lo era anche prima, ma non lo segnalava come errore) è far eseguire le connessioni di rete in un thread secondario (esempio in un asynctask).
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Ivan86

  • Utente junior
  • **
  • Post: 139
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S II
  • Sistema operativo:
    Windows 7
Re:Problema di connessione quando cambio API 7 -> API 17
« Risposta #4 il: 25 Marzo 2013, 09:17:49 CET »
0
Essendo un po' pippa in android (dopo tre anni di non programmazione ho anche dimenticato tutto) non conosco questa Asynctask.
Avete esempi? ci sono snippet? Documentazioni con esempi?

Grazie mille

Post unito: 25 Marzo 2013, 09:54:13 CET
EDIT:
Ok, cercando un po' ho trovato proprio un tuo tutorial :)
[facile] HttpBookSearch: AsyncTask, HttpClient, XML parsing, ProgressDialog - Android Developers Italia

e anche questo link ufficiale non sembra male:
AsyncTask | Android Developers


Toglietemi un dubbio (senza che io apra un nuovo topic) le mappe di google v2 funzionano solo con le API 17?

grazie
« Ultima modifica: 25 Marzo 2013, 09:54:56 CET da Ivan86, Reason: Merged DoublePost »