处理Jsoup连接超时问题
1.问题
在使用jsoup进行爬虫时,发现有时候会因为网络的原因而中断了程序的执行。【正如《计算机网络》中所说的那样,因为网络层是不可靠的,必须由应用层的程序保持可靠性。所以在程序里就必须要考虑到连接不上服务器的情况!】
2.解决方法
这种问题的解决方法无异于以下几种:
- 使用超时属性,将超时时间扩大成60s等【例如在Jsoup中,其超时时间默认是30s】修改的代码如下所示:
con_reserve.timeout(40000);//设置最大超时为40s
- 在超时代码中捕获异常,在
catch
体中给出所需的业务方法,一般来说就是自动重连,如果达到一定的重连次数还是不行,则会断掉连接。【这样整个程序算是终止了。】
于是我再代码里又使用了如下手法防止超时带来的问题。
while(seatInfo == null && connTime <= 5){
try {
seatInfo = con_reserve.ignoreContentType(true)
.method(Method.POST)
.header("Content-Type", "application/json")
.execute();
} catch (IOException e) {
connTime++;
System.out.println("第"+connTime+"次重新预约...");
}
}