Home Menu

Menu



Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 23/04/12, 14:04:22
Avatar de ayozito
ayozito ayozito no está en línea
Miembro del foro
Mensajes: 242
 
Fecha de registro: nov 2011
Mensajes: 242
Tu operador: Movistar
Mencionado: 1 comentarios
Tagged: 0 hilos
Unfortunately....

Estoy haciendo un programa en el que necesito extraer cierta información desde una web.

Código:
   public void getData(String url){
      boolean hecho = false;
      BufferedReader urlStream;
      String sourceCode = null;
      URL pagina;

      while (!hecho){
         try{
            pagina =  new URL(url);
            urlStream = new BufferedReader(new InputStreamReader(pagina.openStream()));             <------------------- A partir de aqui da error.

            sourceCode = urlStream.readLine();
            while (sourceCode != null) {
               if (sourceCode.contains("var wg_fcst_tab_data_1"))
                  break;
               sourceCode = urlStream.readLine();
            }
            hecho = true;
            try {urlStream.close();} catch(Exception e) {}           
         }
         catch (MalformedURLException urlError){
            Toast.makeText(this, urlError.getMessage(), Toast.LENGTH_LONG).show();
         }
         catch (IOException ioError){
            Toast.makeText(this, ioError.getMessage(), Toast.LENGTH_LONG).show();
         }
         catch (IllegalArgumentException argError){
            Toast.makeText(this, argError.getMessage(), Toast.LENGTH_LONG).show();      
         }
      }
la parte de la extracción es la que adjunto, y no se por qué pero dentro del while hay algo que hace saltar el error de Unfortunately app has stopped...

Al principio tenia en vez de los makeText el system.out.println de java y pensé que era eso, pero no... He comprobado la URL y es correcta, y se que es dentro del while porque comentándolo no da el error..

En el manifest le doy el permiso de internet.

Decir que en Java el programa funciona sin ningún problema.

He probado de este modo (http://stackoverflow.com/questions/6...url-in-android) y lo mismo.

Que ven raro?

El log es:
(Click para mostrar/ocultar)

04-23 12:00:51.308: E/AndroidRuntime(535): FATAL EXCEPTION: main
04-23 12:00:51.308: E/AndroidRuntime(535): android.os.NetworkOnMainThreadException
04-23 12:00:51.308: E/AndroidRuntime(535): at android.os.StrictMode$AndroidBlockGuardPolicy.onNe twork(StrictMode.java:1099)
04-23 12:00:51.308: E/AndroidRuntime(535): at java.net.InetAddress.lookupHostByName(InetAddress. java:391)
04-23 12:00:51.308: E/AndroidRuntime(535): at java.net.InetAddress.getAllByNameImpl(InetAddress. java:242)
04-23 12:00:51.308: E/AndroidRuntime(535): at java.net.InetAddress.getAllByName(InetAddress.java :220)
04-23 12:00:51.308: E/AndroidRuntime(535): at libcore.net.http.HttpConnection.<init>(HttpConnect ion.java:71)
04-23 12:00:51.308: E/AndroidRuntime(535): at libcore.net.http.HttpConnection.<init>(HttpConnect ion.java:50)
04-23 12:00:51.308: E/AndroidRuntime(535): at libcore.net.http.HttpConnection$Address.connect(Ht tpConnection.java:351)
04-23 12:00:51.308: E/AndroidRuntime(535): at libcore.net.http.HttpConnectionPool.get(HttpConnec tionPool.java:86)
04-23 12:00:51.308: E/AndroidRuntime(535): at libcore.net.http.HttpConnection.connect(HttpConnec tion.java:128)
04-23 12:00:51.308: E/AndroidRuntime(535): at libcore.net.http.HttpEngine.openSocketConnection(H ttpEngine.java:308)
04-23 12:00:51.308: E/AndroidRuntime(535): at libcore.net.http.HttpEngine.connect(HttpEngine.jav a:303)
04-23 12:00:51.308: E/AndroidRuntime(535): at libcore.net.http.HttpEngine.sendSocketRequest(Http Engine.java:282)
04-23 12:00:51.308: E/AndroidRuntime(535): at libcore.net.http.HttpEngine.sendRequest(HttpEngine .java:232)
04-23 12:00:51.308: E/AndroidRuntime(535): at libcore.net.http.HttpURLConnectionImpl.getResponse (HttpURLConnectionImpl.java:273)
04-23 12:00:51.308: E/AndroidRuntime(535): at libcore.net.http.HttpURLConnectionImpl.getInputStr eam(HttpURLConnectionImpl.java:168)
04-23 12:00:51.308: E/AndroidRuntime(535): at java.net.URL.openStream(URL.java:462)
04-23 12:00:51.308: E/AndroidRuntime(535): at com.appname.AppNameActivity.getData(AppNameActivit y.java:206)
04-23 12:00:51.308: E/AndroidRuntime(535): at com.appname.AppNameActivity.onListItemClick(AppNam eActivity.java:247)
04-23 12:00:51.308: E/AndroidRuntime(535): at android.app.ListActivity$2.onItemClick(ListActivit y.java:319)
04-23 12:00:51.308: E/AndroidRuntime(535): at android.widget.AdapterView.performItemClick(Adapte rView.java:292)
04-23 12:00:51.308: E/AndroidRuntime(535): at android.widget.AbsListView.performItemClick(AbsLis tView.java:1058)
04-23 12:00:51.308: E/AndroidRuntime(535): at android.widget.AbsListView$PerformClick.run(AbsLis tView.java:2514)
04-23 12:00:51.308: E/AndroidRuntime(535): at android.widget.AbsListView$1.run(AbsListView.java: 3168)
04-23 12:00:51.308: E/AndroidRuntime(535): at android.os.Handler.handleCallback(Handler.java:605 )
04-23 12:00:51.308: E/AndroidRuntime(535): at android.os.Handler.dispatchMessage(Handler.java:92 )
04-23 12:00:51.308: E/AndroidRuntime(535): at android.os.Looper.loop(Looper.java:137)
04-23 12:00:51.308: E/AndroidRuntime(535): at android.app.ActivityThread.main(ActivityThread.jav a:4424)
04-23 12:00:51.308: E/AndroidRuntime(535): at java.lang.reflect.Method.invokeNative(Native Method)
04-23 12:00:51.308: E/AndroidRuntime(535): at java.lang.reflect.Method.invoke(Method.java:511)
04-23 12:00:51.308: E/AndroidRuntime(535): at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:784)
04-23 12:00:51.308: E/AndroidRuntime(535): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:551)
04-23 12:00:51.308: E/AndroidRuntime(535): at dalvik.system.NativeStart.main(Native Method)

Última edición por ayozito Día 23/04/12 a las 15:22:27
Responder Con Cita


  #2  
Viejo 23/04/12, 17:43:04
Avatar de ayozito
ayozito ayozito no está en línea
Miembro del foro
Mensajes: 242
 
Fecha de registro: nov 2011
Mensajes: 242
Tu operador: Movistar
Mencionado: 1 comentarios
Tagged: 0 hilos
bueno ya he encontrado el error. Es que las tareas que usen conexión de red tienen que hacerse en hilos independientes.
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 02:11:58 (GMT +2)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007