● 添加maven依赖
<dependency>
<groupId>com.maxmind.geoip2</groupId>
<artifactId>geoip2</artifactId>
<version>2.3.0</version>
</dependency>
有些可能还需使用这个依赖
<dependency>
<groupId>com.maxmind.db</groupId>
<artifactId>maxmind-db</artifactId>
<version>1.0.0</version>
</dependency>
● JAVA代码
package test;
import com.maxmind.geoip2.DatabaseReader;
import com.maxmind.geoip2.model.CountryResponse;
import com.maxmind.geoip2.record.Country;
import java.io.FileInputStream;
import java.net.InetAddress;
import java.util.Map;
public class GenIpDemo {
public static void main(String[] args) throws Exception {
String url = "C:\\Users\\XXX\\Desktop\\data\\GeoLite2-Country.mmdb";
FileInputStream database = new FileInputStream(url);
DatabaseReader reader = new DatabaseReader.Builder(database).build();
String ip = "42.234.147.177";
InetAddress ipAddress = InetAddress.getByName(ip);
CountryResponse response = reader.country(ipAddress);
Country country = response.getCountry();
String name = country.getName();
Integer nameId = country.getGeoNameId();
Integer confidence = country.getConfidence();
Map<String, String> names = country.getNames();
for (Map.Entry<String,String> map : names.entrySet()){
System.out.println("key:"+map.getKey()+" , value:"+map.getValue() );
}
String countryCode = country.getIsoCode();
System.out.println("name : " + name + " , nameId : " + nameId + " , countryCode : " + countryCode + " , confidence : " + confidence);
}
}
● 输出结果
key:de , value:China
key:pt-BR , value:China
key:fr , value:Chine
key:en , value:China
key:ru , value:Китай
key:zh-CN , value:中国
key:es , value:China
key:ja , value:中国
name : China , nameId : 1814991 , countryCode : CN , confidence : null
● ip对应城市 依葫芦画瓢,把country换成city即可