package com.dam.profesor.http; import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class MainActivity extends AppCompatActivity implements View.OnClickListener { Button conectar; String urlconexion = "http://www.elpais.com/rss/feed.html?feedId=1022"; TextView textView; Conexion hiloconexion; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); conectar = (Button)findViewById(R.id.conectar); conectar.setOnClickListener(this); textView = (TextView)findViewById(R.id.textView); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.conectar: textView.setText(""); hiloconexion = new Conexion(); hiloconexion.execute(); break; default: break; } } public class Conexion extends AsyncTask<Void,Integer,String>{ @Override protected String doInBackground(Void... params) { String salida=""; int i=0, j=0; try { URL url = new URL(urlconexion); // Url de donde queremos obtener información HttpURLConnection connection = (HttpURLConnection) url.openConnection(); //Abrir la conexión //Añadimos una cabecera HTTP para que identificarnos y evitar obtener un error de aquellos //servidores que prohiben la respuesta a aquellos clientes que no se identifican. connection.setRequestProperty("User-Agent", "Mozilla/5.0" + " (Linux; Android 1.5; es-ES) Ejemplo HTTP"); int respuesta = connection.getResponseCode(); if (respuesta==HttpURLConnection.HTTP_OK){ BufferedReader lector = new BufferedReader ( new InputStreamReader(connection.getInputStream())); String linea = lector.readLine(); while (linea != null) { //Si encontramos la etiqueta <title> podemos recuperar la noticia if (linea.indexOf("<title><![CDATA") >= 0) { i = linea.indexOf("<title>")+16; j = linea.indexOf("</title>")-3; salida += linea.substring(i,j); salida += "\n----------------\n"; } //Leemos la siguiente línea linea = lector.readLine(); } lector.close(); } else { salida = "No encontrado"; } connection.disconnect(); return salida; } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onCancelled(String aVoid) { super.onCancelled(aVoid); } @Override protected void onPostExecute(String resultado) { textView.append(resultado); //super.onPostExecute(resultado); } @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); } } }