我有一组基于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);
}
我会得到一些输出,直到我开始得到一个例外。
java.io.IOException: Stream closed
有人告诉我设置useragent所以我试过
System.setProperty("http.agent", "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4b) Gecko/20030516 Mozilla Firebird/0.6");
这似乎不起作用。我做错了什么?
答案 0 :(得分: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...