如何从Newline中给出的api中获取数据

时间:2013-07-12 04:12:09

标签: java api newline fetch

我的程序的一部分目的是从此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()));
}

非常感谢任何输入或建议的教程。

1 个答案:

答案 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");

然后使用它可以单独读取这些行。