有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在从Java中的URL读取内容之前,请等待页面加载

我在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) 个答案

  1. # 1 楼答案

    现在,首先是一些不能解决问题的Java编码技巧,然后是一个可能解决问题的技巧

    您应该重构代码,并在finally块中使用try-finally关闭流,以确保即使抛出异常,它也始终关闭。 那么我就不会用带有int的indexOf来让代码更清晰、可读性更强,写起来也不那么冗长if(inputLine.toLowerCase().contains("sales")){ 直接在if语句中删除所有索引代码

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