2015-11-07 7 views
6

Ho messo insieme un lettore RSS che funziona così com'è ma, voglio impostare la connessione all'URL RSS utilizzando il metodo HttpUrlConnection. Quando ho provato, il programma bloccato dopo che ho cliccato pulsante Leggi Rss:L'utilizzo di HttpUrlconnection in Rss Reader causa il blocco di Android

private class getRssFeedTask extends AsyncTask<String, Void, String> { 
    @Override 
    protected String doInBackground(String... params) { 
     try { 
      URL rssUrl = new URL(params[0]); 
      HttpURLConnection urlIn = (HttpURLConnection) rssUrl.openConnection(); 
      InputStream in = new BufferedInputStream(urlIn.getInputStream()); 
      String line; 
      feed = ""; 
      while ((line = in.toString()) != null) { 
       feed += line; 
      } 
      in.close(); 
      return feed; 
     } catch (MalformedURLException ue) { 
      System.out.println("Malformed URL"); 
     } catch (IOException ioe) { 
      System.out.println("The URL is unreachable"); 
     } 
     return null; 
    } 

} 

Questo è il metodo di connessione sono bloccato usando che funziona:

private class getRssFeedTask extends AsyncTask<String, Void, String> { 
    @Override 
    protected String doInBackground(String... params) { 
     try { 
      URL rssUrl = new URL(params[0]); 
      BufferedReader in = new BufferedReader(new InputStreamReader(rssUrl.openStream())); 
      String line; 
      feed = ""; 
      while ((line = in.readLine()) != null) { 
       feed += line; 
      } 
      in.close(); 
      return feed; 
     } catch (MalformedURLException ue) { 
      System.out.println("Malformed URL"); 
     } catch (IOException ioe) { 
      System.out.println("The URL is unreachable"); 
     } 
     return null; 
    } 

} 

Grazie per qualsiasi aiuto che potete fornire!

risposta

4

Quello che devi fare è metterlo in una stringa che ho chiamato risultati. Ho allegato il mio codice per doInBackground. Aggiungendolo a una stringa ha un posto dove archiviare il feed. E funziona per il lettore di rss.

public String doInBackground(String... urls){ 

     String result = ""; 
     try{ 
      URL url = new URL(urls[0]); 
      HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
      InputStream in = conn.getInputStream(); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
      String line = ""; 

      while((line = reader.readLine()) != null){ 
       result = result + line; 
      } 

      conn.disconnect(); 
     } 
     catch(Exception e){ 
      Log.e("ERROR Fetching ", e.toString()); 
     } 
     return result; 
    } 
Problemi correlati