我正在使用以下代码阅读公共网站的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有什么关系?但它们遵循相同的逻辑,因此从缓存而不是从最新的网站中提取?
答案 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!