Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何重复读取HttpURLConnection?_Java_Http_Web Scraping_Httpurlconnection - Fatal编程技术网

Java 如何重复读取HttpURLConnection?

Java 如何重复读取HttpURLConnection?,java,http,web-scraping,httpurlconnection,Java,Http,Web Scraping,Httpurlconnection,我编写了一个Java程序,它可以从网页上抓取一些内容。它通过每隔几秒钟调用readWebPage方法来检索内容。我遇到的问题是,只有第一次阅读才有效。第一次阅读网页后,InputStream总是显示为空(in.ready()returnfalse) 此外,conn.getContentLength()每次返回相同的值,即使页面上的内容已更改。如果我重新启动程序,新内容将被正确获取 我错过了什么?我必须对conn对象执行某种刷新吗 private String readWebpage(HttpUR

我编写了一个Java程序,它可以从网页上抓取一些内容。它通过每隔几秒钟调用
readWebPage
方法来检索内容。我遇到的问题是,只有第一次阅读才有效。第一次阅读网页后,
InputStream
总是显示为空(
in.ready()
return
false

此外,
conn.getContentLength()
每次返回相同的值,即使页面上的内容已更改。如果我重新启动程序,新内容将被正确获取

我错过了什么?我必须对
conn
对象执行某种刷新吗

private String readWebpage(HttpURLConnection conn) throws IOException{
            conn.connect();
            InputStreamReader in = new InputStreamReader((InputStream) conn.getContent());
            BufferedReader buffer = new BufferedReader(in);
            StringBuilder b = new StringBuilder(conn.getContentLength()+5);
            String line;
            while ((line=buffer.readLine())!=null){
                b.append(line);
            }
            in.close();
            buffer.close();
            return b.toString();
    }

您是否每次都传入相同的
HttpURLConnection
对象?如果是,那么由于
InputStream
绑定到底层HTTP连接,因此每次都会得到相同的
InputStream
,而不是考虑到URL的新流。在将新连接(URL#openConnection)传递给此方法之前,请先打开一个新连接(URL#openConnection),这样您就可以开始了。

您是否每次都传递相同的
HttpURLConnection
对象?如果是,那么由于
InputStream
绑定到底层HTTP连接,因此每次都会得到相同的
InputStream
,而不是考虑到URL的新流。在将新连接(URL#openConnection)传递给此方法之前,请先打开一个新连接(URL#openConnection),这样您就可以开始了。

阅读完整个屏幕后,还有什么需要阅读的?一条get或post消息不能导致来自服务器的多个传输。它会发回一条信息,故事结束了

如果屏幕仍在更新,那么要么(a)输入未完成,要么(b)进一步的更新不是HTML,比如有一个小程序或一个Javascript函数正在与服务器通信,或者类似的东西


我认为只要还有输入,BufferedReader.readLine就会阻塞,所以我认为它不可能是(a)。如果情况是(b),阅读更多的HTML不会有帮助:这不会改变。

阅读完整个屏幕后,还有什么需要阅读的?一条get或post消息不能导致来自服务器的多个传输。它会发回一条信息,故事结束了

如果屏幕仍在更新,那么要么(a)输入未完成,要么(b)进一步的更新不是HTML,比如有一个小程序或一个Javascript函数正在与服务器通信,或者类似的东西


我认为只要还有输入,BufferedReader.readLine就会阻塞,所以我认为它不可能是(a)。如果情况是(b),阅读更多的HTML不会有帮助:这不会改变。

完成后是否总是关闭Http连接?我尝试过在完成后调用
conn.disconnect()
,但这似乎没有什么不同。完成后是否总是关闭Http连接?我尝试过在完成后调用
conn.disconnect()
,但似乎没有什么不同。