«

»

may 11 2012

Consumir datos de una URL en Android

Hace poco os contabamos como consumir servicios web soap, pero a veces estos datos estan alojados directamente en una URL con texto plano o queremos consumirlos directamente del interior de un HTML. A Continuacion os dejamos un pequeño tip de como extraer los datos de una URL y almacenarlo en un String para su posterior procesado:

 

public String readURL() {
	StringBuilder builder = new StringBuilder();
	HttpClient client = new DefaultHttpClient();
	HttpGet httpGet = new HttpGet("https://www.ingens-networks.com/secure/vinosyanadas.services/webservice.asmx/GetData?VersionID=1");
	
	try {
		HttpResponse response = client.execute(httpGet);
	
		StatusLine statusLine = response.getStatusLine();
	
		int statusCode = statusLine.getStatusCode();
	
		if (statusCode == 200) {
			HttpEntity entity = response.getEntity();
			InputStream content = entity.getContent();
			BufferedReader reader = new BufferedReader(new InputStreamReader(content));
	
			String line;
			while ((line = reader.readLine()) != null) {
				builder.append(line);
	 		}
		} else {
			Log.e(JsonTestActivity.class.getName(), "Failed to download data");
		}
	
	} catch (ClientProtocolException e) {
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	}
	
	return builder.toString();
	
}

 

ACTUALIZACION: Si no se llama al response.consumeContent() al terminar con el InputStream, dejas la conexión abierta dando problemas en siguientes conexiones.

 

Acerca del autor

JMPergar

Mobile Developer at @BeRepublic & Founder of @AndroCode. Silver Speaker & Member of Core Team at @GDGBarcelona.

  • Eddy Faustor Alva

    Hola, tengo una consulta sobre como manejar las activities en android, mi problema es que quiero poner un boton el cual me cierre toda la aplicacion; pero cuando uso el metodo finish solo me cierre la activity actual y luego me muestra la anterior, he estado buscando si hay alguna forma de matar todo el stack de activities pero hasta el momento no he encontrado nada que me funcione, podrias darle alguna idea de como poder realizar esta tarera?

    Saludos,

    • http://www.linkedin.com/in/jmpergar JMPergar | Editor Jefe

      No se puede directamente, pero podrias usar el onAcitivityResult.

      Con el puedes llamar a las activities esperando un resultado entonces luego al cerrarla actuar en consecuencia. Puedes programarla para que si se cierra la Activity hija de alguna manera concreta se cierren la padre en cadena.

    • https://twitter.com/#!/chinoataku Chinoataku

      Yo para salir de la aplicación utilizo esto:

      Intent intent = new Intent(Intent.ACTION_MAIN);
      intent.addCategory(Intent.CATEGORY_HOME);
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      context.startActivity(intent);

  • fabian

    Hola gracias por el aporte muy interesante…. soy nuevo en la programación en android, me gustaría saber como hago para mostrar en un listview, una imagen al lado izquierdo, en el centro unas características como por ejemplo: nombre de la imagen, tamaño,peso,autor y al lado derecho otra imagen, pero estos datos pidiéndolos desde una bases de datos en un servidor…. agradezco su colaboración.

    • http://www.linkedin.com/in/jmpergar JMPergar | Editor Jefe

      Debería de aprender primero como funcionan las listas y generarlas a partir de bases de datos, en este blog tienes algunos posts al respecto. En cuanto a quela base de datos este en internet entonces dependera de como este implementado el acceso a estos datos. Pero como te digo primero la base.

  • Pedro

    Hola, ¿el response.consumeContent() en que línea habría que ponerlo?

    ¿En esa línea hay que poner response.consumeContent() sin más o delante vá algo más?

    Gracias.

  • http://about.me/sloy Sloy

    Gracias por el snippet, viene genial para copiar y pegar :P