我正在尝试使用JSoup来获取一些数据并将其写入文件,但是我有一个我需要的请求。有时我会收到404错误(即使使用代理标头)。
如何在请求重试之前继续重试该请求,并且只有在我知道它成功收到响应后才写入文本文件?
我的代码如下。
for (String link : listOfLinks(doc)) {
try {
Document doc= Jsoup.connect(link).userAgent("Mozilla").get();
Elements ps = doc.select("p");
writeTextToFile(ps.text());
} catch (IOException e) {
e.printStackTrace();
}
}
我试过将它包裹在一个循环中,也许我没有正确地做到这一点。任何帮助表示赞赏。
答案 0 :(得分:0)
如果将代码包装在函数中,则可以在失败时再次调用它。所以看起来像这样:
function GetData(){
for (String link : listOfLinks(doc)) {
try {
Document doc= Jsoup.connect(link).userAgent("Mozilla").get();
Elements ps = doc.select("p");
writeTextToFile(ps.text());
} catch (IOException e) {
e.printStackTrace();
//Retry
GetData()
}
}
}
GetData()//Start the initial attempt
这应该继续运行,直到它正常工作。您还可以添加超时,以便在重试之前等待一秒左右,如果这有帮助的话。所以不只是:
//Retry
GetData();
这将是:
//Retry after 1000 milliseconds
setTimeout(GetData, 1000);