BufferedReaderJava疑难解答
我目前正在尝试访问许多非常相似的网站,这些网站只包含文本,并且所有的格式都相同 我调用这个方法的前5-30次,它可以工作,但之后它返回null。没有错误。是否有任何原因导致它无法获取字符串 在插入一点文本之后,我发现,BufferedReaderJava疑难解答,java,bufferedreader,inputstreamreader,Java,Bufferedreader,Inputstreamreader,我目前正在尝试访问许多非常相似的网站,这些网站只包含文本,并且所有的格式都相同 我调用这个方法的前5-30次,它可以工作,但之后它返回null。没有错误。是否有任何原因导致它无法获取字符串 在插入一点文本之后,我发现,line=in.readLine()似乎是null,它跳过了字符串抓取的主体。我不经常使用BufferedReader,所以这很可能就是问题所在。如果您有任何提示,或我可以解决这个问题的方法,将不胜感激 public static String pullString(int id)
line=in.readLine()
似乎是null
,它跳过了字符串抓取的主体。我不经常使用BufferedReader
,所以这很可能就是问题所在。如果您有任何提示,或我可以解决这个问题的方法,将不胜感激
public static String pullString(int id) throws IOException {
String price;
logError("Checkpoint 1");
URL url = new URL("example.com");
URLConnection con = url.openConnection();
logError("Checkpoint 2");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
logError("Checkpoint 3");
String line;
while ((line = in.readLine()) != null) {
// ^ for some reason this becomes null, but on identical pages it works fine.
//Removed unneeded info
return ---;
} catch (NumberFormatException e) {
logError("NumberFormatException");
return null;
}
}
}
logError("left out the back");
return null;
}
我怀疑这和BufferedReader有什么关系
服务器很可能返回了一条您忽略的错误消息。我建议您打印返回的内容,以确保标题中没有错误。在您完成阅读之前,连接可能已断开。我建议在while循环中只读取行,然后关闭连接并离线执行逻辑。
您也可以尝试直接使用输入流,读取字节而不是字符串,然后将其脱机转换。不幸的是,我已经尝试过了,但我又尝试了一次,没有运气,谢谢您的尝试。您得到了什么?一句话也没有?如果你得到了一些东西,你能在它过早停止时发布你得到的吗?也许前5-30行包含了您遗漏的内容,这似乎是您的输出。您确定您也在记录从服务器获得的所有信息吗?如果是,则表明您没有收到任何信息,服务器正在断开连接而不向您发送任何信息。这可能是因为a)您的URL格式错误或b)服务器过载。每当我的URL格式错误时,我都会收到一个非常明显的错误,我不相信服务器过载,但谁知道您可能是对的。这就是in.readLine()返回null的唯一两个原因?页面是否可能尚未加载,因此返回null?六羟甲基三聚氰胺六甲醚。。。我真的很感谢peter的帮助。您得到了一个
null
,因为没有更多的输出。如果在没有任何行的情况下发生这种情况,则服务器无法向您发送任何数据。BufferedReader等待数据发送,无论需要多长时间,它都不会超时,如果服务器不断开连接,它将永远等待。不幸的是,在这个问题中,它甚至不会进入while循环。代码中的try
在哪里?我看到一个捕获
,但没有尝试
。