Google会自动填写Edittext并自动填充

时间:2013-06-14 09:21:44

标签: android httpclient google-places

为什么以下代码只返回“{”,即JSON字符串的开头而不是整个JSON?当我在浏览器中键入URL时,它返回完整的JSON。 我试图缓冲响应,但似乎没有任何工作?有人可以解释为什么吗?

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();      

3 个答案:

答案 0 :(得分:1)

您只是阅读回复的第一行。

尝试类似的事情:http://www.java2s.com/Code/Android/File/ReadInputStreamwithBufferedReader.htm

答案 1 :(得分:1)

试试这种方式。

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());
    }

更新:

您需要阅读每一行,目前您正在尝试阅读第一行。

答案 2 :(得分:1)

您正在使用br.readline()函数。正如函数名称所示,它只读取一行。要解析它完全使用像

这样的东西
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();