0

我不是 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;

}

任何人都可以提出一些建议吗?

4

1 回答 1

1

我很确定这是由于服务器没有完成您的响应造成的。尝试首先使用“curl”作为客户端来隔离它。

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

EntityUtils.toString(entity);

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

于 2012-11-18T04:29:35.113 回答