Autore Topic: Formato Stringa Incorretto  (Letto 444 volte)

Offline Raffyna

  • Utente junior
  • **
  • Post: 104
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc wildfire
  • Sistema operativo:
    seven
Formato Stringa Incorretto
« il: 11 Giugno 2015, 10:12:37 CEST »
0
Ciao Guys,
ho un problema con il formato di un file json.

Ho creato una funzione che con una richiesta HTTPGet richiede dati in formato JSON al seguente link :

http://api.openchargemap.io/v2/poi/?output=json&countrycode=IT&distance=5&latitude=45.444412&longitude=9.112652&distanceunit=KM&maxresults=1

Il problema è che quando ricevo il file dal server leggo una serie di caratteri strani :
? ? ? ? ? ? ? ? ? ? ?  ? ? ? X ?r ? 6  ? w ? ? ?  ? ? d ?  ? ? L + ? ? r ? Z  ? = m &  ? ? % ? $ ?  ? ] M & ? > O ? ? O ?   H J ?  ?  z ? 8 ? ? ? ? ? ? ?   } ? ? ? ? t ? ? ? ? ? ? ? ? f c ? u ? ? ?  n ? ? ?  ? ? ? ? ? N > ? ? Q  ? ? ? ? ? ? ? ; t %  ? ? ` ? O , 9 e ? ? ` i   7 X ? ? / 4 " ?  ]  ? ?  ...

A cosa potrebbe essere dovuto ?

Vi posto il codice della richiesta HTTP :

Codice: [Seleziona]
public class JSONParser {

        static InputStream is = null;
        JSONObject jObj = null;
        static String json = "";

        // constructor
        public JSONParser() {}

        /*Funzione per il recupero dei dati*/
        public JSONObject getJSONFromUrl(String url, List<NameValuePair> parametri)
        {
                // Making HTTP request
                try {
                        // defaultHttpClient
                        // Inizializzazione della connessione HTTP
                        DefaultHttpClient httpClient = new DefaultHttpClient();
                       
                        if(url.equals("http://api.openchargemap.io/v2/poi")){
                                HttpGet httpRequest = new HttpGet("http://api.openchargemap.io/v2/poi/?output=json&countrycode=IT&distance=5&latitude=45.444412&longitude=9.112652&distanceunit=KM&maxresults=1");
                                HttpResponse httpResponse = httpClient.execute(httpRequest);
                                HttpEntity httpEntity = httpResponse.getEntity();                       
                                is = httpEntity.getContent();
                        }else{
                                HttpPost httpRequest = new HttpPost(url);
                                httpRequest.setEntity(new UrlEncodedFormEntity(parametri));
                                HttpResponse httpResponse = httpClient.execute(httpRequest);
                                HttpEntity httpEntity = httpResponse.getEntity();                       
                                is = httpEntity.getContent();
                        }
                       
                } catch (UnsupportedEncodingException e)
                {
                        e.printStackTrace();
                } catch (ClientProtocolException e)
                {
                        e.printStackTrace();
                } catch (IOException e)
                {
                        e.printStackTrace();
                }

                try {
                        /*Mi metto in ascolto sulla connessione HTTP e letto tutti i dati memorizzandoli nel buffer SB.
                        Dopo aver letto tutti i dati li memorizzo nella variabile - json - */
                        BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8);
                        StringBuilder sb = new StringBuilder();
                        String line = null;
                        while ((line = reader.readLine()) != null)
                        {
                                sb.append(line);
                        }
                        is.close();
                        json = sb.toString();
                       

                        if(url.equals("http://api.openchargemap.io/v2/poi")){
                                        json = json.replaceAll(" ", "");
                                        json = json.replaceAll(".*\"UsageCost.*months\",", "");

                        }
                       
                       
                        System.out.println("*************************"+json);
                       
                } catch (Exception e)
                {
                        Log.e("Buffer Error", "Error converting result " + e.toString());
                }
                // try parse the string to a JSON object
                try {
                        /*Creo un oggetto JSON contenenre le stringhe appena lette*/
                        jObj = new JSONObject(json);

                       
                        System.out.println("*************************"+json);
                        SingletonClass.getSingletonIstance().setJson(jObj);
                       
                } catch (JSONException e)
                {
                        Log.e("JSON Parser", "Error parsing data " + e.toString());
                        e.printStackTrace();
                }

                // return JSON String
                /*Restituisco i dati appena letti in formato JSON*/
                return jObj;

        }
}

Grazie per l'aiuto.
« Ultima modifica: 11 Giugno 2015, 10:15:46 CEST da Raffyna »

Offline LinkOut

  • Utente normale
  • ***
  • Post: 272
  • Respect: +38
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Formato Stringa Incorretto
« Risposta #1 il: 11 Giugno 2015, 11:23:21 CEST »
0
Cioè mi stai divendo che:

Codice (Java): [Seleziona]
is = httpEntity.getContent(); // in is ci sono quei caratteri strani? (is è quello che ricevi dal server)

Offline Raffyna

  • Utente junior
  • **
  • Post: 104
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc wildfire
  • Sistema operativo:
    seven
Re:Formato Stringa Incorretto
« Risposta #2 il: 15 Giugno 2015, 09:39:01 CEST »
0
Ciao Ragazzi,
dopo aver riavviato più volte il cellulare il problema non si presenta più. Ad oggi riesco a ricevere dati in formato utf-8 quindi segnalo come risolto il topic.

Offline tonno16

  • Utente storico
  • *****
  • Post: 1228
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Formato Stringa Incorretto
« Risposta #3 il: 15 Giugno 2015, 10:12:40 CEST »
0
Capitava anche a me. Dopo 1 oretta senza fare niente è tornato tutto normale come a te :). Io a differenza tua avevo pure specificato l' encoding