Usare AsyncTask per il download di una pagina web
In questo snippet di codice vedremo come implementare una semplice app per recuperare tutto il testo presente all'indirizzo specifico di una pagina web.
Partiamo con realizzare un semplice layout costituito da un bottone, il quale non appena sarà schiacciato andrà a recuperare il testo presente all'interno di una pagina ad uno specifico indirizzo e poi lo mostrerà all'interno di un campo TextView
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/btnReadPage" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="readWebpage" android:text="Carica Pagina"> <TextView android:id="@+id/TextView01" android:layout_width="match_parent" android:layout_height="match_parent" android:text="Testo di prova" > </TextView> </LinearLayout>
Come codice andrò a scrivere:
package it.corsoandroid.asynctask; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.view.View; import android.widget.TextView; public class ReadWebpageAsyncTask extends Activity { private TextView textView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); textView = (TextView) findViewById(R.id.TextView01); } private class DownloadWebPageTask extends AsyncTask<String, Void, String> { @Override 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; } @Override protected void onPostExecute(String result) { textView.setText(result); } } public void readWebpage(View view) { DownloadWebPageTask task = new DownloadWebPageTask(); task.execute(new String[] { "http://www.corsoandroid.it" }); } }
2024-12-27 Tipo/Autore: Davide Copelli {ing} Pubblicato da: CorsoAndroid.it