0

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

我调用此方法的前 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;
}
4

2 回答 2

0

我怀疑它与 BufferedReader 有什么关系。

服务器更有可能返回您忽略的错误消息。我建议您打印返回的内容以确保标题中没有错误。

于 2012-09-05T08:23:34.463 回答
0

在您完成阅读之前,连接可能已断开。我建议在 while 循环中只读取行,然后关闭连接并离线执行逻辑。您也可以尝试直接使用输入流并读取字节而不是字符串,然后将其离线转换。

于 2012-09-05T08:43:19.147 回答