如何从多个URL获取数据并将其存储到一个简单的数组中?

时间:2012-04-06 12:19:26

标签: android json url android-asynctask http-get

我正在使用以下类(AsyncTask)从8个不同的URL中检索信息。我想将检索到的数据存储到一个包含8个元素的数组中(每个URL获取一个数据)。

 private class getDataClass extends AsyncTask<String, Void, String>{
    protected String doInBackground(String...urls){
        String response = "";
        for(String url : urls){
            DefaultHttpClient client = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet(url);
            try{
                HttpResponse execute = client.execute(httpGet);
                InputStream content = execute.getEntity().getContent();

                BufferedReader buffer = new BufferedReader(new InputStreamReader(content));

                String s = "";

                while((s = buffer.readLine()) != null){
                    response += s;
                }
            }catch(Exception e){
                e.printStackTrace();
            } 
        }
        return response;
    }

    protected void onPostExecute(String result){
        Resources.descriptionArray[descriptionArray_Counter] = Html.fromHtml(result).toString();
        descriptionArray_Counter++;
    }

并且这样称呼它:

   getDataClass getData = new getDataClass();
   getData.execute(description_links);

我明显得到的问题是所有信息都存储在array [0]中,因为我的AsyncTask类返回一个“响应”字符串。

我想知道的是,因为我没有找到很多这方面的例子,这将是一个更优雅的方式,以及其他更有经验的编码员如何做到这一点。

非常感谢您花时间回答。

1 个答案:

答案 0 :(得分:1)

 as my AsyncTask class returns a single "response" string.

=&GT;这不是真的。因为AsyncTask只能返回ArrayList而不是字符串。

您应该查看AsyncTask's Generic type