下面说说超时的发现,有可能出现超时的缘由,以及超时处理。浏览器
当你捕获到一个采用JSOUP
去请求超时的连接,我是经过catch
去发现。测试
try{ doc = Jsoup.connect(url) .header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:49.0) Gecko/20100101 Firefox/49.0") .header("Connection", "close")//若是是这种方式,这里务必带上 .timeout(8000)//超时时间 .get(); } catch (Exception e) {//能够精确处理timeoutException //超时处理 }
经过try···catch
去发现超时,而后结合本身的处理,这里要说几个问题。网站
Connection:close
,有同窗可能会问,这个不是相应头里的吗?是的,有的时候你看到在请求头里,有的时候看到在相应头里,并且通常是 Connection:keep-alive
,你加上就能够了。下面会讲到。Kill
了。其实下一篇我也会单独再说一下由于编码问题影响乱码的问题,可能有人会问了,编码问题,怎么还会影响超时?不是只会影响乱码吗?这里有一个细节,咱们超时实际上是分两种,一个是请求超时,一个是读取超时,而个人是读取超时。编码
这个答案我不能确定的告诉你,可是我测试发现是会影响超时。开始是这样去请求,我还采用屡次,请求最频繁超时的地方,我甚至失败重复请求6次。并且每次超时时间设置都是8秒,timeout(8000)//超时时间
。url
try{ doc = Jsoup.connect(url) .header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:49.0) Gecko/20100101 Firefox/49.0") .header("Connection", "close")//若是是这种方式,这里务必带上 .timeout(8000)//超时时间 .get(); } catch (Exception e) {//能够精确处理timeoutException try{ doc = Jsoup.connect(url) .header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:49.0) Gecko/20100101 Firefox/49.0") .header("Connection", "close") .timeout(8000) .get(); } catch (Exception e2) { //超时处理,超时2次 } }
也能够用如下方式处理spa
doc = getDate(url);
public static Document getDate(String url) { Document doc = null; boolean flag = true; while (flag) { try { doc = Jsoup.connect(url).timeout(5000).userAgent("Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 5.0)").get(); flag = false; } catch (IOException e) { // e.printStackTrace(); } } return doc; }