当前位置:  编程技术>java/j2ee

java使用Jsoup连接网站超时的解决方法

    来源: 互联网  发布时间:2014-10-29

    本文导语:  今天做了一个Jsoup解析网站的项目,使用Jsoup.connect(url).get()连接某网站时偶尔会出现java.net.SocketTimeoutException:Read timed out异常。原因是默认的Socket的延时比较短,而有些网站的响应速度比较慢,所以会发生超时的情况。 解决方法...

今天做了一个Jsoup解析网站的项目,使用Jsoup.connect(url).get()连接某网站时偶尔会出现
java.net.SocketTimeoutException:Read timed out异常。
原因是默认的Socket的延时比较短,而有些网站的响应速度比较慢,
所以会发生超时的情况。

解决方法:

链接的时候设定超时时间即可。
doc = Jsoup.connect(url).timeout(5000).get();
5000表示延时时间设置为5s。

测试代码如下:
1,不设定timeout时:

代码如下:

package jsoupTest;

import java.io.IOException;

import org.jsoup.*;
import org.jsoup.helper.Validate;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JsoupTest {
 public static  void main(String[] args) throws IOException{
 String url = "http://www.";
 long start = System.currentTimeMillis();
 Document doc=null;
 try{
  doc = Jsoup.connect(url).get();
 }
 catch(Exception e){
  e.printStackTrace();
 }
 finally{
  System.out.println("Time is:"+(System.currentTimeMillis()-start) + "ms");
 }
 Elements elem = doc.getElementsByTag("Title");
 System.out.println("Title is:" +elem.text());
 } 
}

有时发生超时:
java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at java.io.BufferedInputStream.fill(Unknown Source)
at java.io.BufferedInputStream.read1(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
at sun.net.www.http.ChunkedInputStream.fastRead(Unknown Source)
at sun.net.www.http.ChunkedInputStream.read(Unknown Source)
at java.io.FilterInputStream.read(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(Unknown Source)
at java.util.zip.InflaterInputStream.fill(Unknown Source)
at java.util.zip.InflaterInputStream.read(Unknown Source)
at java.util.zip.GZIPInputStream.read(Unknown Source)
at java.io.BufferedInputStream.read1(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
at java.io.FilterInputStream.read(Unknown Source)
at org.jsoup.helper.DataUtil.readToByteBuffer(DataUtil.java:113)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:447)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:393)
at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:159)
at org.jsoup.helper.HttpConnection.get(HttpConnection.java:148)
at jsoupTest.JsoupTest.main(JsoupTest.java:17)
Time is:3885ms
Exception in thread "main" java.lang.NullPointerException
at jsoupTest.JsoupTest.main(JsoupTest.java:25)

2 设定了则一般不会超时

代码如下:

package jsoupTest;

import java.io.IOException;

import org.jsoup.*;
import org.jsoup.helper.Validate;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JsoupTest {
 public static  void main(String[] args) throws IOException{
 String url = "http://www.";
 long start = System.currentTimeMillis();
 Document doc=null;
 try{
  doc = Jsoup.connect(url).timeout(5000).get();
 }
 catch(Exception e){
  e.printStackTrace();
 }
 finally{
  System.out.println("Time is:"+(System.currentTimeMillis()-start) + "ms");
 }
 Elements elem = doc.getElementsByTag("Title");
 System.out.println("Title is:" +elem.text());
 } 
}


    
 
 

您可能感兴趣的文章:

  • 用java如何实现超时的问题?
  • 求助socket超时控制编程的问题(java)!!!!急急!!!!
  • java数据库连接池和数据库连接示例
  • Java连接池 Nanopool
  • Java连接池 Proxool
  • Java连接池 DBCP
  • 如何用java连接mysql数据库?
  • Java数据库连接池 BoneCP
  • 怎样用java调用DLL动态连接库?
  • Linux系统下利用java连接Oracle 10G
  • 请教:java中如何调用linux下的静态连接库.a文件?
  • java如何连接数据库?
  • 请教:java中如何调用linux下的静态连接库.a文件?
  • java连接DB2问题
  • java连接SQL SERVER
  • Java 连接池组件 JConnectionPool
  • oracle和Java的连接,急!!
  • 用java开发数据库,连接db2应该如何设置classpath (或者说应引入哪个包)
  • 在java中怎么连接MSSQL这样的数据库?database的属性里用什么驱动?
  • Java 和 Access数据库连接问题。谢谢!!
  • 请问JAVA怎么连接Sybase ASA 6.0 ?
  • 请问启动的多个java虚拟机如何共享一个连接池?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Java读写包括中文的txt文件时不同编码格式问题解决
  • 感觉java胜任大型企业级的任务绰绰有余了,可是面对一些小些企业的解决方案听的并不是很多,所以我希望听听各位的看法(如果实际解决过这
  • 请问java中多态性是怎么解决的?
  • java 对树的操作,TreeSet,能否插入相同的数据,如果相同,如何解决
  • Java条形码解决方案 Barbecue
  • Java报表解决方案 OpenReports
  • java.lang.NoclassDefFoundError,怎么解决?
  • 用Java可以解决这个问题吗?急!!!
  • LINUX下的JAVA串口通讯问题,如能解决,不胜感激
  • java中怎样解决汉字乱码问题?
  • 寻找基于JAVA/J2EE的CRM解决方案
  • Java 监控解决方案 Apache Sirona
  • java中出现outofmemory的错误,这要怎么解决?
  • 数据库中缓冲池的java解决
  • 我刚刚学java,可是碰到下面一个问题,请问该如何解决。
  • 解决java 查看JDK中底层源码的实现方法
  • 请教高手:在基于Java的三层分布式结构应用中的打印的解决方案(套打)
  • 贴几篇文章,关于Java 编程技术中汉字问题的分析及解决,大家共同学习吧......
  • Java的Web开发解决方案 OpenHandX
  • 数据库 iis7站长之家
  • Error: java.lang.ArrayIndexOutOfBoundsException,什么意思?如何解决?
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3