【发布时间】:2011-07-19 07:41:57
【问题描述】:
我正在尝试从 URL 连接读取 html 代码。在一种情况下,我尝试读取的 html 文件在实际文档类型声明之前包含 5 个换行符。在这种情况下,输入阅读器会抛出 EOF 异常。
URL pageUrl =
new URL(
"http://www.nytimes.com/2011/03/15/sports/basketball/15nbaround.html"
);
URLConnection getConn = pageUrl.openConnection();
getConn.connect();
DataInputStream dis = new DataInputStream(getConn.getInputStream());
//some read method here
有人遇到过这样的问题吗?
URL pageUrl = new URL("http://www.nytimes.com/2011/03/15/sports/basketball/15nbaround.html");
URLConnection getConn = pageUrl.openConnection();
getConn.connect();
DataInputStream dis = new DataInputStream(getConn.getInputStream());
String urlData = "";
while ((urlData = dis.readUTF()) != null)
System.out.println(urlData);
//抛出异常
java.io.EOFException 在 java.io.DataInputStream.readUnsignedShort(DataInputStream.java:323) 在 java.io.DataInputStream.readUTF(DataInputStream.java:572) 在 java.io.DataInputStream.readUTF(DataInputStream.java:547)
对于bufferedreader,它只是响应null并且不继续
pageUrl = new URL("http://www.nytimes.com/2011/03/15/sports/basketball/15nbaround.html");
URLConnection getConn = pageUrl.openConnection();
getConn.connect();
BufferedReader br = new BufferedReader(new InputStreamReader(getConn.getInputStream()));
String urlData = "";
while(true)
urlData = br.readLine();
System.out.println(urlData);
输出为空
【问题讨论】:
-
换行符不是 EOF。也许发布您的阅读代码及其引发的异常?
-
我同意 Brian R. 的上述评论,如果没有堆栈跟踪,很难说出问题所在。另外,我不确定为什么需要使用 DataInputStream 来读取 HTML。那是主要用于读取 Java 原始类型(二进制)。如果你想逐行阅读,BufferedReader 是一个更好的(非弃用)选择。
标签: java url html-parsing urlconnection datainputstream