在Rss Reader中使用HttpUrlconnection会导致Android挂起

Nat*_*ren 6 java rss android

我把一个按原样工作的RSS阅读器放在一起但是,我想使用HttpUrlConnection方法设置与RSS URL的连接.当我尝试它时,我单击Read Rss按钮后程序被锁定:

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

}
Run Code Online (Sandbox Code Playgroud)

这是我使用的连接方法有效:

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

}
Run Code Online (Sandbox Code Playgroud)

感谢您的任何帮助,您可以提供!

小智 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;
    }
Run Code Online (Sandbox Code Playgroud)