Foros del Web » Programando para Internet » Android »

obtener el valor de un archivo txt alojado en un host

Estas en el tema de obtener el valor de un archivo txt alojado en un host en el foro de Android en Foros del Web. Bueno, primeramente mis respetos y saludos a la comunidad. primeramente explicare que estoy armando una apk, que debe verificar si existe una versión nueva a ...
  #1 (permalink)  
Antiguo 05/07/2013, 13:14
 
Fecha de Ingreso: mayo-2006
Mensajes: 86
Antigüedad: 18 años, 6 meses
Puntos: 0
obtener el valor de un archivo txt alojado en un host

Bueno, primeramente mis respetos y saludos a la comunidad.
primeramente explicare que estoy armando una apk,
que debe verificar si existe una versión nueva a traves de un host dicho sea de paso una web.

la idea es esta:

la apk tiene una versión; digamos 1.0.

en la web por ejemplo http://www.forosdelweb.com.
hay un archivo llamado ver.txt y en este están anotadas las versiones de la apk.
por ejemplo

Código:
"1.0"
"1.1"
de manera que para acceder al archivito este seria una dirección como esta:
http://www.forosdelweb.com/ver.txt

para obtener la versión de la apk use este código
que dicho sea de paso lo imprimí para comprobar que si funciona:


Código:
String strVersion = null;
		PackageInfo pInfo;
		try {
			pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
			strVersion = "Version Name: " + pInfo.versionName +"\n"
				       + "Version Code: " + String.valueOf(pInfo.versionCode);
		} catch (NameNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		//strVersion = "Cannot load Version!";
		
		mTextView.setText(strVersion);
el problema esta en que no puedo obtener la información que contiene el archivito ver.txt

he estado probando este código pero no se en que falla


Código:
InputStream in = null;
try {
    		
		   URL url = new URL("http://telemovilgps.com/gps/ver.txt");
		   HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
		   urlConnection.setRequestMethod("GET");
		    urlConnection.setDoOutput(true);
		    urlConnection.connect();
		    in = urlConnection.getInputStream();
		   

	} catch (MalformedURLException e) {
	    e.printStackTrace();
	} catch (IOException e) {
	    e.printStackTrace();
	}
		       

		m2TextView.setText(" mas.." + in + "final");
pero logre que imprimiera la información del host, o al menos eso parece.

ayúdenme con eso primeramente.

espero haberles explicado bien.
  #2 (permalink)  
Antiguo 05/07/2013, 14:04
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: obtener el valor de un archivo txt alojado en un host

1. Trata de debugear
2. Recuerda leer (pasarlo a un string) en contenido de ese InputStream
3. Recuerda asignar los permisos necesarios en tu Manifiest.xml

Otra cosa que imprime.
m2TextView.setText(" mas.." + in + "final");

Si te arroja un error sería útil que nos dijeras cual es.
  #3 (permalink)  
Antiguo 05/07/2013, 14:45
 
Fecha de Ingreso: mayo-2006
Mensajes: 86
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: obtener el valor de un archivo txt alojado en un host

hum,
lo que imprimio es esto:

Código:
mas..org.apache.harmony.luni.internal.net.www.protocol.http.FixedLengthInputStream@40772f98final
no entiendo que es,

como lo debugeo?
y que permiso habilito en el xml manifest
  #4 (permalink)  
Antiguo 16/07/2013, 02:11
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años, 8 meses
Puntos: 33
Respuesta: obtener el valor de un archivo txt alojado en un host

Hola,

Yo tuve también problemas con las conexiones a internet, e investigando logré arreglarlo.

Si estás programando con un target alto (supongo), al intentar acceder a internet te dará una excepción.

Ésta "salta" porque a partir de cierta versión, Android no permite que se lancen peticiones en el hilo principal.

Para evitar que se te lance la excepción, tendrás que hacer uso de AsyncTask.

Si estás intentando acceder a internet desde el hilo principal, entonces tendrás que usar AsyncTask, te hago un ejemplo rápido:

Código Java:
Ver original
  1. public class MiClase extends AsyncTask<Params, Progress, Return>{
  2. /*
  3. Params, Progress y Return tienen que ser un tipo de objeto (String, Boolean, ...)
  4.  
  5. Params es una lista de entrada
  6. Progress es un valor de progreso
  7. Return será el tipo de retorno
  8. */
  9.  
  10.   protected Return doInBackground(Params ... params){
  11.     //aquí el código que acceda a internet
  12.   }
  13. }

Como tú accedes a una URL y (en teoría) retornas un String, podrías hacer:

Código Java:
Ver original
  1. public class MiClase extends AsyncTask<String, Float, String>{
  2. /*
  3. Params, Progress y Return tienen que ser un tipo de objeto (String, Boolean, ...)
  4.  
  5. Params es una lista de entrada
  6. Progress es un valor de progreso
  7. Return será el tipo de retorno
  8. */
  9.  
  10.   protected String doInBackground(String ... params){
  11.      /*
  12. aquí deberías llamar al código que tienes entre try y catch. Puedes meterlo en un método estático (por ejemplo), y que reciba como parámetros un String (que será la dirección a acceder). El retorno lo haces de tipo String, y haces que devuelva el contenido que lee de la web.
  13.     */
  14.   }
  15. }

Una vez hecho esto, desde donde quieras acceder a internet tendrías que hacer:

Código Java:
Ver original
  1. String retornoDeInternet = new MiClase().execute("url a acceder").get();

Y si no me he equivocado al escribir, todo debería salir bien.

Debes tener en cuenta lo que dice @razpeitia, y darle los permisos de internet a la aplicación.

Espero que te sirva

Saludos!

Etiquetas: todo, txt, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:21.