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

Respuesta
 
Herramientas
  #1  
Viejo 23/04/12, 14:04:22
Array

[xs_avatar]
ayozito ayozito no está en línea
Miembro del foro
 
Fecha de registro: nov 2011
Mensajes: 242
Tu operador: Movistar

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
Array

[xs_avatar]
ayozito ayozito no está en línea
Miembro del foro
 
Fecha de registro: nov 2011
Mensajes: 242
Tu operador: Movistar

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   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 09:54:40 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /