繁体   English   中英

如何反复从HttpURLConnection读取?

How do I repeatedly read from a HttpURLConnection?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我编写了一个Java程序,该程序从网页上抓取了一些内容。 它每隔几秒钟调用一次readWebPage方法来检索内容。 我遇到的问题是,只有第一读实际有效。 第一次阅读网页后, InputStream总是显示为空( in.ready()返回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();
    }
2 个回复

您是否每次都传递相同的HttpURLConnection对象? 如果是,则由于InputStream已绑定到基础HTTP连接,因此每次都会获得相同的InputStream而不是要考虑的新URL流。 在将新连接传递给此方法之前,请打开一个新连接(URL#openConnection),您应该一切顺利。

阅读完整个屏幕后,还有什么要阅读? 一条获取或发布消息不能导致服务器进行多次传输。 它发回一条消息,故事结束。

如果屏幕仍在更新,则(a)输入尚未完成,或者(b)进一步的更新不是HTML,例如与服务器通信的applet或Javascript函数等。

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

1 我如何从vim的进程中反复读写?

很难将其表达为一个问题,但这是我想要做的: 我希望vim执行一个过程并写入其stdin并从其stdout文件描述符中重复读取。 换句话说,我想要vim与另一个程序之间来回对话。 我将以cat为例。 如果您在不使用命令行参数的情况下运行cat,那么您在stdin上键入的任何内容都会 ...

2 如何重复读取套接字?

开始我用C#编码。 我通过套接字将不同大小的数据写入设备。 在写入我想要从套接字读取的数据之后,因为一旦完成处理所有数据,设备将回写错误代码/完成消息。 目前我有这样的事情: 我在其他地方使用ReadFromSocket ,所以我知道它工作正常。 最终发生的事情是我连接的端口(在 ...

4 如何从 HttpURLConnection 读取完整响应?

我在 andorid 中制作了一些代理服务器来修改 http 标头,它工作正常,但我必须将完整响应转发到“顶层”。 我如何从 HttpURLConnection 读取整个响应(所有标题、内容、所有内容)? 在 getInputStream 中,我只收到了内容,有可能有一些包含整个 reposne ...

5 如何判断是否没有要从HttpURLConnection读取的内容

我目前正在从创建的REST服务读取数据。 返回的数据是List<String> 。 列表中填充了YAML文件内容,这些内容被提取到地图中,然后提取到列表中。 当get调用返回某些内容(即List对象中有内容)时,我的代码可以正常工作。 什么都不返回,我得到一个java.n ...

7 如何(重复)读取.NET SslStream超时?

我只需要从SslStream读取N个字节,但如果在超时之前没有收到任何字节,则取消,同时让流保持有效状态以便稍后再试。 (*) 对于非SSL流,即NetworkStream只需使用其ReadTimeout属性即可轻松完成,这将使流在超时时抛出异常。 不幸的是,根据官方文档,这种方法不适 ...

8 如何使用HttpURLConnection放置数据

我想使用Java将http请求发送到解析服务器,这是请求 为了发送它,我已经使用HttpURLConnection创建了一个请求,我已经像这样设置了第三个参数 但是对于最后一个参数,我不确定如何将其设置为请求? 任何帮助将不胜感激。 非常感谢。 ...

9 如何使用Bytebuddy检测HttpURLConnection?

我正在使用Bytebuddy拦截HttpURLConnection的某些方法并添加跟踪。 我编写了以下代码: 但是,该方法从未使用过。 我知道HttpURLConnection加载在引导程序上。 我如何仍可以对其进行检测? ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM