很难将其表达为一个问题,但这是我想要做的: 我希望vim执行一个过程并写入其stdin并从其stdout文件描述符中重复读取。 换句话说,我想要vim与另一个程序之间来回对话。 我将以cat为例。 如果您在不使用命令行参数的情况下运行cat,那么您在stdin上键入的任何内容都会 ...
提示:本站收集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();
}
您是否每次都传递相同的HttpURLConnection
对象? 如果是,则由于InputStream
已绑定到基础HTTP连接,因此每次都会获得相同的InputStream
而不是要考虑的新URL流。 在将新连接传递给此方法之前,请打开一个新连接(URL#openConnection),您应该一切顺利。
阅读完整个屏幕后,还有什么要阅读? 一条获取或发布消息不能导致服务器进行多次传输。 它发回一条消息,故事结束。
如果屏幕仍在更新,则(a)输入尚未完成,或者(b)进一步的更新不是HTML,例如与服务器通信的applet或Javascript函数等。
我认为BufferedReader.readLine会一直阻塞,只要仍有输入输入,所以我认为可能不是(a)。 如果情况是(b),则阅读更多HTML不会有帮助:这没有改变。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.