2015-11-07 19 views
6

我放在一起工作的RSS閱讀器,但我想使用HttpUrlConnection方法設置到RSS URL的連接。當我試了一下,程序關起來後,我點擊閱讀RSS按鈕:在Rss閱讀器中使用HttpUrlconnection導致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; 
    } 

} 

這是我使用卡住它的連接方法的工作原理:

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; 
    } 

} 

感謝您的幫助,您可以提供!

回答

4

你需要做的是把它放到一個字符串中,我稱之爲結果。我已附加了doInBackground的代碼。通過將它添加到字符串中,它有一個地方來存儲提要。它適用於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; 
    }