android json解析继续加载

时间:2012-11-17 05:25:58

标签: java android json

我不是android平台的新手,我以前解析了很多json页面,但是一个链接正在创建问题。我使用以下函数来返回json对象。程序在reader.readline()处停止,加载不会停止。

public JSONObject getJSONFromUrl(String url) {
    DefaultHttpClient httpClient = new DefaultHttpClient();

    try {

        HttpResponse httpResponse = httpClient.execute(new HttpGet(url));
        if (httpResponse.getStatusLine().getStatusCode()==200)
        {
            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();
        }

    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
        System.out.println("Unsupported Encoding");
    } catch (ClientProtocolException e) {
        e.printStackTrace();
        System.out.println("Client Protocol");
    } catch (IOException e) {
        e.printStackTrace();
        System.out.println("IO");
    }

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

        }
        is.close();
        jsonStr = sb.toString();
    } catch (Exception e) {
        System.out.println("Error here");
        Log.e("Buffer Error", "Error converting result " + e.toString());
    }

    // try parse the string to a JSON object
    try {

        jObj = new JSONObject(jsonStr);

    } catch (JSONException e) {
        Log.e("JSON Parser", "Error parsing data " + e.toString());
    }

    return jObj;

}

任何人都可以建议吗?

1 个答案:

答案 0 :(得分:1)

我很确定这是由服务器未完成您的情况下的响应引起的。尝试首先使用“curl”作为客户端来隔离它。

如果您使用这样的EntitUtils,还有一种更简单的方法可以将body获取到String中:

EntityUtils.toString(entity);

您还可以将编码指定为第二个参数。 http://developer.android.com/reference/org/apache/http/util/EntityUtils.html