Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过IP获取地理位置(插口1.8和1.13.2)_Java_Geolocation_Minecraft_Bukkit - Fatal编程技术网

Java 通过IP获取地理位置(插口1.8和1.13.2)

Java 通过IP获取地理位置(插口1.8和1.13.2),java,geolocation,minecraft,bukkit,Java,Geolocation,Minecraft,Bukkit,我只想通过提供ip地址来确定地理位置。 我的目标是保存城市、国家、邮政编码和其他信息 CraftPlayer cp = (CraftPlayer)p; String adress = cp.getAddress(); 只要使用ip就可以找到任何简短的可能性吗?有很多网站提供免费的ip地理定位数据库 例子包括: 在插件启动时,您可以下载其中一个数据库,然后在运行时在本地查询它 如果选择下载.bin格式,则必须初始化本地数据库,然后导入数据。否则,您可以将csv文件与Java库一起使用,如

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

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

只要使用ip就可以找到任何简短的可能性吗?

有很多网站提供免费的ip地理定位数据库

例子包括:

在插件启动时,您可以下载其中一个数据库,然后在运行时在本地查询它

如果选择下载.bin格式,则必须初始化本地数据库,然后导入数据。否则,您可以将csv文件与Java库一起使用,如

从opencsv的文档中:

对于阅读,创建一个bean来容纳你想要阅读的信息, 使用opencsv注释对bean字段进行注释,然后执行以下操作:

listbeans=newcsvtobeanbuilder(FileReader(“yourfile.csv”))
.withType(Visitors.class).build().parse();

文档链接:

有很多网站提供免费的IP地理定位数据库

例子包括:

在插件启动时,您可以下载其中一个数据库,然后在运行时在本地查询它

如果选择下载.bin格式,则必须初始化本地数据库,然后导入数据。否则,您可以将csv文件与Java库一起使用,如

从opencsv的文档中:

对于阅读,创建一个bean来容纳你想要阅读的信息, 使用opencsv注释对bean字段进行注释,然后执行以下操作:

listbeans=newcsvtobeanbuilder(FileReader(“yourfile.csv”))
.withType(Visitors.class).build().parse();
文档链接:

我建议使用

然后,您可以选择所需的信息并创建HTTP链接,如下所示:

本例中的结果是:

success
United States
US
VA
Virginia
Ashburn
20149
America/New_York
因此,您可以在Java中创建一个读取HTTP的方法,并在
\n
处拆分它,以获得以下行:

private void whatever(字符串ip){
字符串ipinfo=getHttp(“http://ip-api.com/line/“+ip+”?字段=49471“;
if(ipinfo==null | |!ipinfo.startsWith(“成功”)){
//TODO:失败
返回;
}
字符串[]行=ipinfo.split(“\n”);
//托多:现在你可以得到信息了
字符串国家=行[1];
/*
...
*/
}
私有静态字符串getHttp(字符串url){
试一试{
BufferedReader br=新的BufferedReader(新的InputStreamReader(新的URL.openStream());
弦线;
StringBuilder sb=新的StringBuilder();
而((line=br.readLine())!=null){
sb.append(line.append(System.lineSeparator());
}
br.close();
使某人返回字符串();
}捕获(IOE异常){
e、 printStackTrace();
}
返回null;
}
请确保不要在短时间内创建太多查询,因为ip-api.com会因此禁止您使用。

我建议使用

然后,您可以选择所需的信息并创建HTTP链接,如下所示:

本例中的结果是:

success
United States
US
VA
Virginia
Ashburn
20149
America/New_York
因此,您可以在Java中创建一个读取HTTP的方法,并在
\n
处拆分它,以获得以下行:

private void whatever(字符串ip){
字符串ipinfo=getHttp(“http://ip-api.com/line/“+ip+”?字段=49471“;
if(ipinfo==null | |!ipinfo.startsWith(“成功”)){
//TODO:失败
返回;
}
字符串[]行=ipinfo.split(“\n”);
//托多:现在你可以得到信息了
字符串国家=行[1];
/*
...
*/
}
私有静态字符串getHttp(字符串url){
试一试{
BufferedReader br=新的BufferedReader(新的InputStreamReader(新的URL.openStream());
弦线;
StringBuilder sb=新的StringBuilder();
而((line=br.readLine())!=null){
sb.append(line.append(System.lineSeparator());
}
br.close();
使某人返回字符串();
}捕获(IOE异常){
e、 printStackTrace();
}
返回null;
}

请确保不要在短时间内创建太多的查询,因为ip-api.com会因此禁止您创建查询。

使用类似这样的api:您想托管自己的本地数据库进行查询吗?如果是的话,你可以从yes下载并使用免费的数据库,托管自己的数据库就好了。ip2loc数据库看起来不错。是否有任何简单的可能性,仅通过提供ipv4从文件中返回信息?请使用类似这样的API:是否希望托管自己的本地数据库进行查询?如果是的话,你可以从yes下载并使用免费的数据库,托管自己的数据库就好了。ip2loc数据库看起来不错。是否有任何简单的可能性,仅通过提供ipv4从文件返回信息?