猿问

通过 IP 获取地理定位(Spigot 1.8 和 1.13.2)

我只想通过提供 ip 地址来找出地理位置。我的目标是保存城市、国家、邮政编码和其他信息。

CraftPlayer cp = (CraftPlayer)p;
String adress = cp.getAddress();

任何短的可能性,仅通过使用 ip 来找出?


慕沐林林
浏览 85回答 2
2回答

qq_花开花谢_0

我推荐使用http://ip-api.com/docs/api:newline_separated然后您可以选择您需要的信息并创建您的 HTTP 链接,例如:http://ip-api.com/line/8.8.8.8?fields=49471此示例中的结果将是:successUnited StatesUSVAVirginiaAshburn20149America/New_York因此,您可以在 Java 中创建一个方法来读取 HTTP 并将其拆分\n为获取行:private void whatever(String ip) {    String ipinfo = getHttp("http://ip-api.com/line/" + ip + "?fields=49471");    if (ipinfo == null || !ipinfo.startsWith("success")) {        // TODO: failed        return;    }    String[] lines = ipinfo.split("\n");    // TODO: now you can get the info    String country = lines[1];    /*    ...     */}private static String getHttp(String url) {    try {        BufferedReader br = new BufferedReader(new InputStreamReader(new URL(url).openStream()));        String line;        StringBuilder sb = new StringBuilder();        while ((line = br.readLine()) != null) {            sb.append(line).append(System.lineSeparator());        }        br.close();        return sb.toString();    } catch (IOException e) {        e.printStackTrace();    }    return null;}只需确保不要在短时间内创建太多查询,因为 ip-api.com 会禁止您这样做。

慕妹3146593

有很多网站提供免费的 IP 地理定位数据库。例子包括:极思IP2位置在插件启动时,您可以下载这些数据库之一,然后在运行时在本地查询它。如果您选择下载 .bin 格式,则必须初始化本地数据库,然后导入数据。否则,您可以将 csv 文件与opencsv之类的 Java 库一起使用。从 opencsv 的文档:对于阅读,创建一个 bean 来存放您想要阅读的信息,用 opencsv 注释注释 bean 字段,然后执行以下操作:List<MyBean>&nbsp;beans&nbsp;=&nbsp;new&nbsp;CsvToBeanBuilder(FileReader("yourfile.csv")) &nbsp;&nbsp;&nbsp;&nbsp;.withType(Visitors.class).build().parse();文档链接: http:&nbsp;//opencsv.sourceforge.net
随时随地看视频慕课网APP

相关分类

Java
我要回答