当前位置: 首页 > 知识库问答 >
问题:

在The LogCat中显示JSON Google搜索

蒋硕
2023-03-14

我正在尝试从URL获取搜索结果

https://ajax.googleapis.com/ajax/services/search/web?v=1.0

并使用< code>log.v()将其显示到LogCat中。

问题是,该程序不是在LogCat中显示搜索结果,而是不间断地运行,我在LogCat中看到的是无穷无尽的列表。

11-19 15:51:11.256: D/dalvikvm(1251):GC_FOR_ALLOC释放480K,14%释放6651K/7688K,暂停8ms,共8ms

11-19 15:51:11.264 :D/达尔维克姆(1251): GC_FOR_ALLOC释放480K,14%释放6651K/7688K,暂停8ms,总共8ms

11-19 15:51:11.272: D/dalvikvm(1251):GC_FOR_ALLOC释放480K,14%释放6651K/7688K,暂停5ms,共5ms

11-19 15:51:11.272 :D/dalvikvm(1251):GC _ FOR _ ALLOC释放480K,14%释放6651K/7688K,暂停4ms,总共5ms

11-19 15:51:11.324: D/dalvikvm(1251):GC_FOR_ALLOC释放480K,14%释放6651K/7688K,暂停45ms,总45ms

11-19 15:51:11.332: D/dalvikvm(1251):GC_FOR_ALLOC释放480K,14%释放6651K/7688K,暂停8ms,共8ms

11-19 15:51:11.400 :D/达尔维克姆(1251): GC_FOR_ALLOC释放480K,14%释放6651K/7688K,暂停23毫秒,总共23毫秒

11-19 15:51:11.424 :D/dalvikvm(1251):GC _ FOR _ ALLOC释放480K,14%释放6651K/7688K,暂停2ms,总共2ms

11-19 15:51:11.464:D/dalvikvm(1251):GC_FOR_ALLOC释放480K,14%释放6651K/7688K,暂停26ms,总计26ms

这永远不会停止并继续下去,直到我在模拟器中杀死应用程序。

这是我的密码

公共类MainActivity扩展活动{

html" target="_blank">html" target="_blank">public static final String TAG= MainActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    if(isNetworkAvilable()){
        GetSearchData getSearchData = new GetSearchData();
        getSearchData.execute();
        
    }
    else{
        Toast.makeText(this, "The network is down", Toast.LENGTH_SHORT).show();
    }
    
}


private boolean isNetworkAvilable() {
    // TODO Auto-generated method stub
    
    boolean isAvailable= false;
    ConnectivityManager manager=  (ConnectivityManager) 
            getSystemService(CONNECTIVITY_SERVICE);
    
    NetworkInfo networkInfo=manager.getActiveNetworkInfo();
    
    if(networkInfo !=null && networkInfo.isConnected()){
        
        isAvailable=true;
    }
    
    return isAvailable;
}




private class GetSearchData extends AsyncTask<Object, Void, String>{
    
    protected String doInBackground(Object... params){
        
        int responseCode=-1;
        try{
            
            URL url=new URL("https://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=JSON");
            
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            
            connection.connect();
            
             responseCode= connection.getResponseCode();
             
            // Log.i(TAG, "Code: "+responseCode);
            
             if(responseCode== HttpURLConnection.HTTP_OK){
                 InputStream inputStream= connection.getInputStream();
                 Reader reader= new InputStreamReader(inputStream);
                 
                 int nextCharacter;
                 String responseData="";
                 while(true){
                     nextCharacter=reader.read();
                     
                     
                     
                     if(responseCode==-1){
                         break;
                     }
                     
                     responseData+= (char) nextCharacter;
                     
                 }
                 
                 JSONObject jsonObject= new JSONObject(responseData);
                 
                 
                 
                JSONObject jsonObject2= jsonObject.getJSONObject("responseData");
                 
                // JSONObject jsonObject3= jsonObject.getJSONObject("results");
                 
                 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);
                     
                 }
                 
                 
             }
             else{
                 Log.i(TAG, "Wrong Response Code: " + responseCode);
             }
             
            
            
        }
        catch(MalformedURLException e){
            Log.e(TAG, "Exception: "+e);
        }
        catch(IOException e){
            Log.e(TAG, "Exception: "+e);
        }
        
        catch(Exception e){
            Log.e(TAG, "Exception: "+e);
        }
        
        return "Code: "+responseCode;
    }
    
    
    
}

}

共有1个答案

邹坚壁
2023-03-14

尝试使用此代码进行网络呼叫,至少可以从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;
        }
    }
 类似资料:
  • 问题内容: 我想使用jQuery / Java脚本搜索并突出显示文本。 示例HTML 1: 当我搜索字符串“ Good Morning”时,div1和div3中的内容都应突出显示。即。输出html应该是 我使用了插件https://raw.github.com/bartaz/sandbox.js/master/jquery.highlight.js将搜索到的内容包含在span中。但是只有div3高

  • 问题内容: 如何突出显示使用php的mysql查询的搜索结果? 这是我的 [修改] 代码: 问题答案: 您可以使用preg_replace();,当它在文本中找到匹配项时,您可以在匹配词周围放置一个带有突出显示类别的div。然后,您可以向突出显示类添加背景颜色和边框,以使其突出显示 preg_replace期望3个参数; 第一个是您要寻找的 第二个是应该更改为 他应从中搜索并替换的文本字符串 例如

  • 因此,我最近开始学习Android编程,并一直在学习本教程,学习如何在SQLite数据库中插入、更新、删除和查看数据。现在,我还想在这个SQLite数据库中添加一个搜索功能,在这个数据库中,我可以搜索一个名称(我使用的列是name、contact和DOB),如果搜索到的名称与数据库中现有的名称匹配,则在应用程序中显示数据库中的一行/条目。我想这可以以类似于查看/更新数据库的方式来完成,所以我试着用

  • 输入出发地和抵达地,可搜索前往目的地的路径。 轻触(选项)>[搜索路径],在出发地与抵达地的字段各自输入关键词并轻触[搜索]。地图会显示最短路径。 可从书签中选择出发地及抵达地。请轻触(书签),选择地点。 A ) (徒步)/(乘车) 可选择路径的移动方式。轻触即会以选择的移动方式搜索最短路径。 B ) 与目的地间的距离及所需时间 C ) (显示列表)/(隐藏列表) 轻触即可将搜索结果列表切换为显示

  • 想搜索地点时可输入相关的关键词或住址来搜索地点。 轻触(选项)>[搜索地点],在搜索栏输入关键词后轻触[搜索]。搜索结果会在地图上以(地点旗帜)显示。 查看搜索结果列表 显示地点旗帜时,可查看搜索结果列表。 1. 显示地图的状态下轻触屏幕。 2. 轻触(显示列表)。 画面会显示搜索结果列表。轻触想显示的地点即会显示地图。

  • 搜索“adida shi”,应该会得到两个商品,一个是名称为“adidas shirts”,另一个是“adidas red shirts” 预期突出显示: 实际突出显示: 有什么想法让它工作吗?