Ver Mensaje Individual
  #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