1

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

任何输入或建议的教程将不胜感激。

4

1 回答 1

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

使用它,您可以单独阅读这些行。

于 2013-07-12T04:19:23.600 回答