我不是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;
}
任何人都可以建议吗?
答案 0 :(得分:1)
我很确定这是由服务器未完成您的情况下的响应引起的。尝试首先使用“curl”作为客户端来隔离它。
如果您使用这样的EntitUtils,还有一种更简单的方法可以将body获取到String中:
EntityUtils.toString(entity);
您还可以将编码指定为第二个参数。 http://developer.android.com/reference/org/apache/http/util/EntityUtils.html