我的程序的一部分目的是从此api中检索以换行格式提供的数据:http://ip-api.com/docs/api:newline_separated。数据与IP地址的地理位置有关,并以换行格式显示;我只想拉某些线。我对Java中的url / file i / o不太熟悉,当我研究它时,我有点不知所措。我能够访问我想要的数据,但我正在努力理解如何将它拉入我的程序。
这是我的方法,用于访问数据,拉出某些行,然后将其转换为变量以在类的其余部分中使用:
public void getGeoLoc()
{
String locHolder;
try {
geoLocRetriever = new URL("http://ip-api.com/line/" + MainDisplay.getAttackerIpHolder());
} catch (MalformedURLException e) {
e.printStackTrace();
}
//BufferedReader in = new BufferedReader(new InputStreamReader(geoLocRetriever.openStream()));
}
非常感谢任何输入或建议的教程。
答案 0 :(得分:1)
您需要阅读流中的所有数据。
InputStream stream = geoLocRetriever.openStream();
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
if (stream != null) try {
final BufferedInputStream input = new BufferedInputStream(stream);
final byte[] reader = new byte[16384];
int r = 0;
while ((r = input.read(reader, 0, 16384)) != -1)
buffer.write(reader, 0, r);
buffer.flush();
} catch(IOException e) {
e.printStackTrace();
} finally {
if(stream != null) try {
stream.close();
} catch(IOException e) {
e.printStackTrace();
}
}
将其转换为字符串。
locHolder = new String(buffer.toByteArray());
然后,您可以使用String.split
分割线条。
String[] lines = locHolder.split("\n");
然后使用它可以单独读取这些行。