Foros del Web » Programando para Internet » Android »

Error in http connection android.os.NetworkOnMa

Estas en el tema de Error in http connection android.os.NetworkOnMa en el foro de Android en Foros del Web. Buenas a to@s, os llevo siguiendo bastante tiempo desde la sombra, pero hoy me veo obligado a tener que postear para pediros una solución a ...
  #1 (permalink)  
Antiguo 30/03/2013, 23:51
 
Fecha de Ingreso: marzo-2013
Mensajes: 5
Antigüedad: 11 años
Puntos: 0
Error in http connection android.os.NetworkOnMa

Buenas a to@s, os llevo siguiendo bastante tiempo desde la sombra, pero hoy me veo obligado a tener que postear para pediros una solución a un problema que me lleva de cabeza.

El problema como su titulo indica es el erro en http conection... desde la versión 3.x no es posible establecer una conexión web sin ejecutar el código en un thread.

Tengo mi código en el mainActivity el cual es el encargado de lanzar la operación completa de procesar el id de Android y consultarlo en una base de datos externa, leo el resultado de la ejecución de un php.

¿Por que aparece el error, si lo ejecuto desde un hilo diferente?

Código:
protected void miHilo(){
		Thread t= new Thread() {
			public void run(){
				try{
					Thread.sleep(2000);
				}
				catch(InterruptedException e){
					e.printStackTrace();
				}
				mHandler.post(ejecutarAccion);
			}
		};
		t.start();
	}
	
	final Runnable ejecutarAccion = new Runnable (){
		public void run(){
			this.procesarIdAdndroid();
		}
	};
procesarIdAndroid() llama a la clase comunicaciones y esta a su vez a post.
Todas mis clases extienden de Activity
  #2 (permalink)  
Antiguo 31/03/2013, 15:20
 
Fecha de Ingreso: marzo-2013
Mensajes: 5
Antigüedad: 11 años
Puntos: 0
Información Respuesta: Error in http connection android.os.NetworkOnMa

Buenas amig@s!!! Mientras esperaba si alguien me iluminaba con el camino, leyendo y releyendo post, blog etc. he "solucionado" el tema temporalmente.

Os copio mi clase Post la cual he tenido que extenderla de AsyncTask para poder ejecutarla en un hilo distinto.
Para poder obtener el resultado en la clase comunicación, la cual era la que llamaba a esta, he realizado una chapucilla con unas variables publicas estáticas (datos y procesoTerminado) ya que no podia parar esta (no se como) hasta obtener el resultado de la ejecución de la clase Post.

Código:
public class Post extends AsyncTask<ArrayList<String>, Void, Void>{
	private InputStream is = null;
	private String respuesta = "";
	@Override
	protected Void doInBackground(ArrayList<String> ... parametros) {
		String aux = null;
		conectaPost(parametros[0], "http://URL/archivo.php");
		if (is != null) {
			getRespuestaPost();
			aux = respuesta;
		}
		Comunicaciones.datos = aux; //CHAPUZA TEMPORAL
		Comunicaciones.procesoTerminado = true; //CHAPUZA TEMPORAL
		return null;
	}	
	
	private void conectaPost(ArrayList<String> parametros, String URL) {
		ArrayList<BasicNameValuePair> nameValuePairs;
		try {
			HttpClient httpclient = new DefaultHttpClient();
			HttpPost httppost = new HttpPost(URL);
			nameValuePairs = new ArrayList<BasicNameValuePair>();
			if (parametros != null) {
				for (int i = 0; i < parametros.size() - 1; i += 2) {
					nameValuePairs.add(new BasicNameValuePair(
							(String) parametros.get(i), (String) parametros
									.get(i + 1)));
				}
				httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
			}
			HttpResponse response = httpclient.execute(httppost);
			HttpEntity entity = response.getEntity();
			is = entity.getContent();
		} catch (Exception e) {
			Log.e("log_tag", "Error en http connection " + e.toString());
		}
	}

	private void getRespuestaPost() {
		try {
			BufferedReader reader = new BufferedReader(
					new InputStreamReader(is, "iso-8859-1"), 8);
			StringBuilder sb = new StringBuilder();
			String line = null;
			while ((line = reader.readLine()) != null) {
				sb.append(line + "\n");
			}
			is.close();

			respuesta = sb.toString();
			Log.e("log_tag", "Cadena recibida --> " + respuesta);
		} 
		catch (Exception e) {
			Log.e("log_tag", "Error al convertir resultado " + e.toString());
		}
	}
Se aceptan correcciones y criticas!

Etiquetas: activity, connection
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 00:01.