Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    problema con confronto testo

    Salve ragazzi, so che è un quesito stupido ma mi sta facendo impazzire sta cosa
    trattasi di confronto tra stringhe

    codice:
            String result = null;
            String parametri = null;
            //String link = null;
            try {
                parametri = "?android_id=" + URLEncoder.encode(Android_ID, "UTF-8");
                URL url = new URL(link_listavideo+parametri);
                HttpURLConnection con = (HttpURLConnection) url.openConnection();
                BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
                StringBuilder sb = new StringBuilder();
                sb.append(reader.readLine() + "\n");
                String line="0";          
                while ((line = reader.readLine()) != null) {
                    sb.append(line + "\n");
                }             
                result=sb.toString();
                //paring data
                DBvideoList.clear();
                System.out.println("result-> "+result);
                if (result.equals("NULL")) {
                    System.out.println("true");
                } else {
                    System.out.println("false");                
                }
                String noresult = "NULL";
                if (result.equals(noresult)) {
                    System.out.println("true");
                } else {
                    System.out.println("false");                
                }
    ricevo
    codice:
    02-18 17:50:35.943: I/System.out(20124): result-> NULL
    02-18 17:50:35.943: I/System.out(20124): false
    02-18 17:50:35.943: I/System.out(20124): false
    non riesco proprio a capire perchè...provato anche con .equalsignorecase
    la stringa NULL proviene da un print "NULL" in php
    grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da ilmagowalter Visualizza il messaggio
    codice:
                sb.append(reader.readLine() + "\n");
                while ((line = reader.readLine()) != null) {
                    sb.append(line + "\n");
                }             
                result=sb.toString();
    Evidentemente quel result non è solo "NULL" (4 caratteri) ma c'è dell'altro. E da quanto si vede nel codice, viene appeso dietro alla linea un "\n".

    Ci sono però due cose che lasciano qualche dubbio:
    - perché fai prima un readLine fuori dal ciclo? Se la response fosse (per qualunque motivo di errore) vuota, readLine restituirebbe null e avresti "null\n", ancora ben diverso.
    - perché appendi "\n"? Dove usi poi quel result?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    hai ragione tu... era il "\n" il problema
    per quanto riguarda questo codice l'ho un pò riutilizzato non essendo molto esperto di java
    in effetti la lettura fuori ciclo non serve

    il result viene poi utilizzato con un JSONArray

    codice:
                    try{
                        JSONArray jArray = new JSONArray(result);
                        JSONObject json_data=null;
                        for(int i=0;i<jArray.length();i++){
                                json_data = jArray.getJSONObject(i);
                                DBvideoList.add(json_data.getString("NOME_FILE"));
                        }         
                    }catch(JSONException e1){
                        Log.e("DBvideoList", "JSONException-> "+e1.getMessage());
                    }catch (ParseException e1){
                        Log.e("DBvideoList", "ParseException");
                        e1.printStackTrace();
                    }
    ho tolto la lettura fuori ciclo, e dal php non restituisco più la stringa "NULL" ma non restituisco proprio niente
    e poi il controllo lo faccio con
    codice:
    if (!(result==null || result.length() == 0))
    grazie

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da ilmagowalter Visualizza il messaggio
    il result viene poi utilizzato con un JSONArray

    codice:
                        JSONArray jArray = new JSONArray(result);
    Scusa se insisto ma continuo a non capire bene il senso (e gli obiettivi) di quello che stai facendo. Il JSONArray di Android ha un costruttore che riceve un String, che è quello che stai usando tu passando result che è un String.
    Ma questa stringa deve contenere la codifica JSON per un array e da quanto mi è parso di capire non è così. O sbaglio?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    result contiene dati tipo questi

    codice:
    02-19 09:35:34.653: I/System.out(14502): result-> [{"NOME_FILE":"video1.mp4"},{"NOME_FILE":"video3.mp4"},{"NOME_FILE":"video5.mp4"}]
    il file php che passa i valori è
    codice:
    <?php
      $android_id= $_GET['android_id'];  
      mysql_connect("localhost","root","");
      mysql_select_db("ecopm");
      $sql=mysql_query("
      SELECT C.NOME_FILE
        FROM
            SEDE_INSTALLAZIONE_VIDEO A,
            SEDE_INSTALLAZIONE B,
        ANAG_VIDEO C,
        ANAG_DISPOSITIVO D
        WHERE
                A.ID_SEDE = B.ID_SEDE
        AND A.ID_VIDEO = C.ID_VIDEO
        AND B.ID_DISPOSITIVO = D.ID_DISPOSITIVO
        AND D.ANDROID_ID = '" . $android_id . "'");
        if (mysql_num_rows($sql) == 0) {
    //        print "NULL";
        } else {
                while($row=mysql_fetch_assoc($sql)) $output[]=$row;
              print(json_encode($output));
        } 
      mysql_close();
    ?>

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da ilmagowalter Visualizza il messaggio
    result contiene dati tipo questi

    codice:
    02-19 09:35:34.653: I/System.out(14502): result-> [{"NOME_FILE":"video1.mp4"},{"NOME_FILE":"video3.mp4"},{"NOME_FILE":"video5.mp4"}]
    Ok, allora è sensato e corretto! Come non detto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    purtroppo non sono molto esperto di java, json...ma ho sempre programmato ( in altri linguaggi ) e quando ho necessità cerco di riutilizzare il codice trovato su internet, seguire tutorial...per cui, ammetto di aver messo in dubbio la "sensatezza" quando mi hai scritto che non capivi..
    in pratica, con php faccio la mia query su db e restituisco valori in formato json, quando presenti, altrimenti niente
    in java verifico se ho risultati, se si..decodifico il json, altrimenti non lo faccio

    grazie per l'aiuto e l'interessamento

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.