Android:使用BufferedReader提取网站:提取的信息已过时

时间:2015-05-19 16:15:24

标签: android url caching bufferedreader

我正在使用以下代码阅读公共网站的html源代码:

代码:

@Override
         protected Void doInBackground(Void... params) 
         {
            try 
            {
                URL url = new URL(""+URL);
                BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
                String inputLine;
                PageCode = "";
                OriginalPageCode = "";
                while ((inputLine = in.readLine()) != null)
                {
                    PageCode += inputLine;
                }                   
                OriginalPageCode = PageCode;
                try
                {
                    extract_website_and_save(); // extracting data from PageCode
                }
                catch (Exception e1)
                {

                }

                in.close();
            } 

背景:

以上代码有时可以正确获取最新的网站。但偶尔会与网站的过时版本相关联,因此无法获取该网站的最新信息。

我很好奇为什么会出现上述情况,是否与从缓存中提取而不是真正更新的网站有关?

因此,我使用Chrome浏览相同的链接,发现Chrome还提取了过时的网站。

我已尝试重启设备,但问题仍然存在。

30分钟到1小时后,我请求再次获取应用程序,然后可以提取最新信息。我同时使用Chrome浏览网站,Chrome现在可以获得最新的网站。

问题:

上面的BufferedReader与Chrome有什么关系?但它们遵循相同的逻辑,因此从缓存而不是从最新的网站中提取?

1 个答案:

答案 0 :(得分:0)

我强烈怀疑端点是否被URL缓存

尝试这样的事情

label:Begin

因此,如果您将代码修改为类似的内容。

    urlSrt = urlSrt + "?x=" + new Random().nextInt(100000); 

    // If your URL already is passing parameters i.e. example.com?x=1&p=pass - then modify 
    // the urlSrt line to to use an "&" and not "?" 
    // i.e. urlSrt = urlSrt + "&x=" + new Random().nextInt(100000);

    URL url = new URL(urlSrt);
    URLConnection con = url.openConnection();
    con.setUseCaches(false); //This will stop caching!