2012-09-05 189 views
0

我目前正试图访问大量非常类似的网站,它们只包含文本,并且都以相同的方式进行格式化。BufferedReader故障排除Java

我第一次调用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; 
} 
+0

代码中的“try”在哪里?我看到一个“catch”,但没有“try”。 – Mysticial

回答

0

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

它更可能是服务器正在返回您忽略的错误消息。我建议你打印返回的内容以确保头部没有错误。

+0

不幸的是,我已经尝试过,但我再次尝试过,没有运气,谢谢你尝试 – Echocage

+1

你得到了什么?根本没有线路?如果你有什么东西,你可以发布过早停止的东西吗?也许前5到30行包含你错过的东西。 –

+0

http://pastebin.com/eUwCWJrT 不幸的是,字符串不会返回任何内容。 – Echocage

0

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

+0

不幸的是,在这个问题中,它甚至没有进入while循环 – Echocage