使用 GeoLite 实现IP精准定位(Java实现)

maxmind提供的免费GeoLite数据库可以使我们简单方便的对 全球ip 进行过定位。下面介绍使用方法 参考自官方, 写下来留着以后备用:

1 下载mmdb文件数据库和添加依赖

GeoLite2.mmdb官方下载地址

如果官方下载较慢的话也可以使用百度云地址

Maven依赖

 
    com.maxmind.geoip2 
    geoip2
    v2.3.0

2 使用


File database = new File("/path/to/GeoIP2-City.mmdb");


DatabaseReader reader = new DatabaseReader.Builder(database).build();

InetAddress ipAddress = InetAddress.getByName("128.101.101.101");

CityResponse response = reader.city(ipAddress);

Country country = response.getCountry();
System.out.println(country.getIsoCode());            
System.out.println(country.getName());               
System.out.println(country.getNames().get("zh-CN")); 

Subdivision subdivision = response.getMostSpecificSubdivision();
System.out.println(subdivision.getName());    
System.out.println(subdivision.getIsoCode()); 

City city = response.getCity();
System.out.println(city.getName()); 

Postal postal = response.getPostal();
System.out.println(postal.getCode()); 

Location location = response.getLocation();
System.out.println(location.getLatitude());  
System.out.println(location.getLongitude()); 

参考

[1] geolite2-开源数据库
[2] GeoIP2 Java API

你可能感兴趣的:(Java)