Java 在LogCat中显示JSON Google搜索
我正在尝试从URL获取搜索结果 并使用log.v将其显示到LogCat中 问题是,程序没有在LogCat中显示搜索结果,而是一直不停地运行,我在LogCat中看到的是一个无休止的列表 11-19 15:51:11.256:D/dalvikvm1251:GC_FOR_ALLOC freed 480K,14%free 6651K/7688K,暂停8ms,总计8ms 11-19 15:51:11.264:D/dalvikvm1251:GC_FOR_ALLOC freed 480K,14%free 6651K/7688K,暂停8ms,总计8ms 11-19 15:51:11.272:D/dalvikvm1251:GC_FOR_ALLOC freed 480K,14%free 6651K/7688K,暂停5ms,总计5ms 11-19 15:51:11.272:D/dalvikvm1251:GC_FOR_ALLOC freed 480K,14%free 6651K/7688K,暂停4ms,总计5ms 11-19 15:51:11.324:D/dalvikvm1251:GC_FOR_ALLOC freed 480K,14%free 6651K/7688K,暂停45毫秒,总计45毫秒 11-19 15:51:11.332:D/dalvikvm1251:GC_FOR_ALLOC freed 480K,14%free 6651K/7688K,暂停8ms,总计8ms 11-19 15:51:11.400:D/dalvikvm1251:GC_FOR_ALLOC freed 480K,14%free 6651K/7688K,暂停23ms,总计23ms 11-19 15:51:11.424:D/dalvikvm1251:GC_FOR_ALLOC freed 480K,14%free 6651K/7688K,暂停2ms,总计2ms 11-19 15:51:11.464:D/dalvikvm1251:GC_FOR_ALLOC freed 480K,14%free 6651K/7688K,暂停26ms,总计26ms 在我在模拟器中关闭应用程序之前,这不会停止并继续 这是我的密码 公共类MainActivity扩展了活动{ }Java 在LogCat中显示JSON Google搜索,java,android,ajax,json,android-asynctask,Java,Android,Ajax,Json,Android Asynctask,我正在尝试从URL获取搜索结果 并使用log.v将其显示到LogCat中 问题是,程序没有在LogCat中显示搜索结果,而是一直不停地运行,我在LogCat中看到的是一个无休止的列表 11-19 15:51:11.256:D/dalvikvm1251:GC_FOR_ALLOC freed 480K,14%free 6651K/7688K,暂停8ms,总计8ms 11-19 15:51:11.264:D/dalvikvm1251:GC_FOR_ALLOC freed 480K,14%free 66
尝试使用此代码进行网络呼叫,它至少可以从internet获取数据,然后将其发布到LogCat中
public class GetSearchData extends AsyncTask<Void,Void,Void> {
@Override
protected Void doInBackground(Void... params) {
String url = "https://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=JSON";
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
try{
HttpResponse httpResponse = httpClient.execute(httpGet);
String responseData = inputStreamToString(httpResponse.getEntity().getContent()).toString();
Log.v("OUTPUT", responseData);
JSONObject jsonObject= new JSONObject(responseData);
JSONObject jsonObject2= jsonObject.getJSONObject("responseData");
JSONArray jsonArray= jsonObject2.getJSONArray("results");
for (int i = 0; i < jsonArray.length(); i++){
JSONObject results = jsonArray.getJSONObject(i);
String title = results.getString("title");
Log.v(TAG, "Result "+i+" : "+title);
}
} catch (IOException e){
e.printStackTrace();
} catch (JSONException e){
e.printStackTrace();
}
return null;
}
public static StringBuilder inputStreamToString(InputStream is){
String line;
StringBuilder sb = new StringBuilder();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
try {
while ((line = rd.readLine()) != null) {
sb.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
return sb;
}
}
你能发布完整的代码吗,即你在哪里调用execute?@reactivemobile Ya对不起。我现在发布了完整的代码。这些日志消息来自垃圾收集器,它们与您的异步任务无关。请尝试按标记筛选日志消息,看看会出现什么情况。@RogueBaneling当我使用标记筛选日志消息时,什么也不显示。有时,我在让LogCat正常工作时会遇到问题。请尝试在您确信工作正常的地方使用Log.v,即onCreate,这样您就可以判断日志消息是否正确打印。非常感谢您的帮助。这个错误是因为一些非常愚蠢的事情:'我不知何故在while break条件中编写了responseCode==-1,而不是nextcharacter==-1。现在我的代码工作了。再次感谢您,很抱歉给您带来麻烦。如果您正在通过LogCat查看大量JSON,您可能会发现它们很有用。当您双击消息时,它会很好地打印JSON。[完全披露,我是LogRabbit的创造者]
public class GetSearchData extends AsyncTask<Void,Void,Void> {
@Override
protected Void doInBackground(Void... params) {
String url = "https://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=JSON";
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
try{
HttpResponse httpResponse = httpClient.execute(httpGet);
String responseData = inputStreamToString(httpResponse.getEntity().getContent()).toString();
Log.v("OUTPUT", responseData);
JSONObject jsonObject= new JSONObject(responseData);
JSONObject jsonObject2= jsonObject.getJSONObject("responseData");
JSONArray jsonArray= jsonObject2.getJSONArray("results");
for (int i = 0; i < jsonArray.length(); i++){
JSONObject results = jsonArray.getJSONObject(i);
String title = results.getString("title");
Log.v(TAG, "Result "+i+" : "+title);
}
} catch (IOException e){
e.printStackTrace();
} catch (JSONException e){
e.printStackTrace();
}
return null;
}
public static StringBuilder inputStreamToString(InputStream is){
String line;
StringBuilder sb = new StringBuilder();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
try {
while ((line = rd.readLine()) != null) {
sb.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
return sb;
}
}