BufferedReaderJava疑难解答

BufferedReaderJava疑难解答,java,bufferedreader,inputstreamreader,Java,Bufferedreader,Inputstreamreader,我目前正在尝试访问许多非常相似的网站,这些网站只包含文本,并且所有的格式都相同 我调用这个方法的前5-30次,它可以工作,但之后它返回null。没有错误。是否有任何原因导致它无法获取字符串 在插入一点文本之后,我发现,line=in.readLine()似乎是null,它跳过了字符串抓取的主体。我不经常使用BufferedReader,所以这很可能就是问题所在。如果您有任何提示,或我可以解决这个问题的方法,将不胜感激 public static String pullString(int id)

我目前正在尝试访问许多非常相似的网站,这些网站只包含文本,并且所有的格式都相同

我调用这个方法的前5-30次,它可以工作,但之后它返回null。没有错误。是否有任何原因导致它无法获取字符串

在插入一点文本之后,我发现,
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
在哪里?我看到一个
捕获
,但没有
尝试