Autore Topic: Problema di ritorno dati!  (Letto 469 volte)

Offline lelletta

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
Problema di ritorno dati!
« il: 21 Dicembre 2011, 09:27:09 CET »
0
Ciao ho questo piccolo proble che non riesco a risolvere!

Codice (Java): [Seleziona]
private void onLog() {
        ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
        postParameters.add(new BasicNameValuePair("username", username.getText().toString()));
        postParameters.add(new BasicNameValuePair("password", password.getText().toString()));
        String risposta = "";
        risposta = AccessoDbRemoto.accesso(postParameters);
        Log.i("RISPOSTA", risposta);
                if(risposta!=null){
                        errore.setText("Correct Username or Password");
                } else {
        errore.setText("Sorry!!Incorrect Username or Password");
       
                }
               
        }

Il metodo ritorna un stringa. Quando l'utente non è presente nel db o cmq i campi immessi sono sbagliati il metodo ritorna null! Verificato nel log. Il problema è che non mi esegue  l'else e non capisco perchè!

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Problema di ritorno dati!
« Risposta #1 il: 21 Dicembre 2011, 10:10:24 CET »
0
Prova a controllare anche il fatto che risposta sia vuota:

Codice (Java): [Seleziona]
                if(!TextUtils.isEmpty(risposta)){
                        errore.setText("Correct Username or Password");
                } else {
        errore.setText("Sorry!!Incorrect Username or Password");
       
                }

http://developer.android.com/reference/android/text/TextUtils.html#isEmpty(java.lang.CharSequence)

In questi casi comunque basta mettere un log o un breakpoint per capire il valore della variabile risposta e scrivere il codice di conseguenza ;)

Offline lelletta

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
Re:Problema di ritorno dati!
« Risposta #2 il: 21 Dicembre 2011, 13:29:59 CET »
0
Niente! il log l'avevo già inserito e mi restituisce null ma non riesco a capire perchè non fa il confronto nel if!

Offline lelletta

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
Re:Problema di ritorno dati!
« Risposta #3 il: 21 Dicembre 2011, 21:07:23 CET »
0
12-21 20:01:43.598: I/log_tag(507): id: 1, password: 827ccb0eea8a706c4c34a16891f84e7b, sesso: M, username: pippo
12-21 20:01:43.598: I/Json_Android(507): Result= [{"id":"1","password":"827ccb0eea8a706c4c34a16891f84e7b","email":"pipposport@yahoo.it","sesso":"M","username":"pippo"}]
12-21 20:02:01.375: E/log_tag(507): Error parsing data org.json.JSONException: Value null of type org.json.JSONObject$1 cannot be converted to JSONArray
12-21 20:02:01.375: I/Json_Android(507): Result= null

Questo è il log: quello in grassetto è il caso in cui l'utente è presente nel db, sottolineato invece è il caso in cui l'utente non esiste e restituisce null.
Faccio i controlli sul null ma niente...non lo vede!!

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Problema di ritorno dati!
« Risposta #4 il: 21 Dicembre 2011, 21:41:10 CET »
0
Metti qualche breakpoint e fai una sessione di debug ;)

Offline lelletta

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
Re:Problema di ritorno dati!
« Risposta #5 il: 22 Dicembre 2011, 10:02:56 CET »
0
Già fatto! ma il problema persiste!
ti posto il codice dove in pratica si verifica il problema!
Codice (Java): [Seleziona]
private static final String DEB_TAG = "HTTP_PROVA";
    public static String connect(String url, ArrayList<NameValuePair> postParameters)
    {

        HttpClient httpclient = new DefaultHttpClient();
        String result=null;
        Log.i("Verifica:",result+"="+null);
        HttpPost httppost = new HttpPost(url);
   
        try {
           
            httppost.setEntity(new UrlEncodedFormEntity(postParameters));
            ResponseHandler<String> responseHandler = new BasicResponseHandler();
            result = httpclient.execute(httppost,responseHandler);
            Log.i("Verifica pre if:",result+"="+null);
            if(result==null){Log.i("LOG","ENTRATO");}
            Log.i("Verifica dopo if:",result+"="+null);
           
         } catch (HttpResponseException e) {
           
            Log.w(DEB_TAG,"HTTP Response Exception : "+e.toString());
         } catch (Exception e) {
            Log.w(DEB_TAG,"Error : "+e.toString());
         } finally {
            if (httpclient != null)
                httpclient.getConnectionManager().shutdown();
         }
         if (result != null)
                                try {
                                        JSONArray jArray = new JSONArray(result);
                                for(int i=0;i<jArray.length();i++){
                                        JSONObject json_data = jArray.getJSONObject(i);
                                        String id = String.valueOf( json_data.getInt("id"));
                                        Log.i("log_tag","id: "+json_data.getInt("id")+
                                                ", password: "+json_data.getString("password")+
                                                ", sesso: "+json_data.getString("sesso")+
                                                ", username: "+json_data.getString("username")
                                        );
                                }
                                }catch(JSONException e){
                                        Log.e("log_tag", "Error parsing data "+e.toString());
                               
                                }
                       
         
         return result;

                }
   

Ho messo un po di Log per vedere cosa succede!
In sostanza quando la variabile result è null non esegue ne l'if di controllo che ho messo sopra if(result==null) e sopratutto mi entra nella seconda if if(result!=null) anche quando il valore di result è null!
Grazie per l'aiuto!

Offline lelletta

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
Re:Problema di ritorno dati!
« Risposta #6 il: 22 Dicembre 2011, 13:57:32 CET »
0
risolto...con un controllo la server!!!graziE :-P