2013-06-14 2 views
0

Pourquoi le code suivant me renvoie-t-il uniquement un "{" i.e début d'une chaîne JSON et non l'intégralité du JSON? Quand je tape l'URL dans le navigateur, il me renvoie le JSON complet. J'ai essayé de tamponner la réponse, mais rien ne semble fonctionner? Quelqu'un peut-il expliquer pourquoi?Lieux Google et saisie semi-automatique Edittext

HttpClient httpclient = new DefaultHttpClient(); 
HttpGet httpget = new HttpGet("https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Nasik%20&types=geocode&language=en&sensor=true&key=API-KEY"); 
HttpResponse response = httpclient.execute(httpget); 
InputStream is = response.getEntity().getContent(); 
BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
Toast.makeText(this, br.readLine(), Toast.LENGTH_LONG).show();  

Répondre

1

Essayez de cette façon.

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(); 
     Log.d("Json Output",sb.toString()); 
    } catch (Exception e) { 
     Log.e("Buffer Error", "Error converting result " + e.toString()); 
    } 

Mise à jour:

Vous devez lire chaque ligne, actuellement vous essayez de lire la première ligne.

1

Vous utilisez la fonction br.readline(). Comme le nom de la fonction le suggère, il ne lit qu'une seule ligne. Pour l'analyser complètement, utilisez quelque chose comme

StringBuilder sb = new StringBuilder(); 
String line = null; 
while ((line = br.readLine()) != null) { 
    sb.append(line + "\n"); 
} 
Toast.makeText(this, sb.toString(), Toast.LENGTH_LONG).show(); 
Questions connexes