0

我有一组我用基于 PHP 的应用程序收集的 facebook 用户 ID。

我将它保存为 txt 文件并尝试获取人的真实姓名。我为此使用java。

通常http://graph.facebook.com/userid会给 Json 响应名称和其他信息。

while((temp = br.readLine())!=null){                
    url = new URL("http://graph.facebook.com/"+temp);
    urlcon = url.openConnection();
    bf = new BufferedReader(new InputStreamReader(urlcon.getInputStream()));
    response = bf.readLine();
    Map jsonData=parser.parseJson(response);
    value=(String)jsonData.get("name");
    System.out.println(value);
}

我会得到一些输出,直到我开始得到一个 Exception 。

java.io.IOException: Stream closed

有人告诉我设置用户代理,所以我尝试了

System.setProperty("http.agent", "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4b) Gecko/20030516 Mozilla Firebird/0.6"); 

这似乎不起作用。我究竟做错了什么 ?

4

1 回答 1

0

由于您没有关闭流,这意味着其他人是。通常,套接字仅在服务器关闭它们之前保持打开一小段时间。您可能需要重构代码,以便每次打开 URL 连接时,将所有数据读入某种数据结构,关闭连接,然后对数据执行操作。您可以执行以下操作:

List<String> data; //some data structure you've initialized beforehand.
String temp;
while ((temp = bf.readLine()) != null) {
    data.add(temp);
}
bf.close();
//do stuff with the data...
于 2013-05-29T18:35:21.073 回答