等到页面加载后再从Java中读取URL中的内容

时间:2011-09-07 20:37:46

标签: java url connection find bufferedreader

我正在读取我的java代码中的url但是我想要读取的页面在加载时执行命令并且InputStreamReader在完全加载之前读取页面,因此我的缓冲读取器仅在页面之前收集HTML真实内容已加载。

我的主要目标是在页面上找到“sales”这个词,但如果在加载完整页面之前连接了已打开的流,则无法执行此操作。有没有办法等待它加载或什么?

这是我的代码:

URL url = new URL("http://urlgoeshere.com?"+ withAParam);
        URLConnection uc = url.openConnection();
        uc.connect();
        BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream()));
        String inputLine = in.readLine();
        int index = -1;             
        while ((inputLine = in.readLine()) != null){
            index=inputLine.toLowerCase().indexOf("sales");
            if(index>=0){
            log.info("Found sales!");
                break;                  
            }
        }
        if (in != null){
            in.close(); 
        }

1 个答案:

答案 0 :(得分:1)

现在首先是一些Java编码提示,这些提示无法解决您的问题,然后提示可能。

您应该重构代码并使用try-finally关闭finally块中的流,以确保它始终关闭,即使抛出异常也是如此。 然后我不会将indexOf与int一起使用。为了使代码更清晰,更易读,更简洁,可以写if(inputLine.toLowerCase().contains("sales")){ 直接在你的if语句中删除所有索引代码。

您可以尝试使用apache API http://hc.apache.org/httpcomponents-client-ga/index.html来获取主页。