使用 GeoLite 实现IP精准定位(Java实现)
2015-11-29 本文已影响3211人
Kjiang
maxmind提供的免费GeoLite数据库可以使我们简单方便的对 全球ip 进行过定位。下面介绍使用方法 参考自官方, 写下来留着以后备用:
1 下载mmdb文件数据库和添加依赖
如果官方下载较慢的话也可以使用百度云地址
Maven依赖
<dependency>
<groupId>com.maxmind.geoip2</groupId>
<artifactId>geoip2</artifactId>
<version>v2.3.0</version>
</dependency>
2 使用
//GeoIP2-City 数据库文件
File database = new File("/path/to/GeoIP2-City.mmdb");
// 创建 DatabaseReader对象
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()); // 'US'
System.out.println(country.getName()); // 'United States'
System.out.println(country.getNames().get("zh-CN")); // '美国'
Subdivision subdivision = response.getMostSpecificSubdivision();
System.out.println(subdivision.getName()); // 'Minnesota'
System.out.println(subdivision.getIsoCode()); // 'MN'
City city = response.getCity();
System.out.println(city.getName()); // 'Minneapolis'
Postal postal = response.getPostal();
System.out.println(postal.getCode()); // '55455'
Location location = response.getLocation();
System.out.println(location.getLatitude()); // 44.9733
System.out.println(location.getLongitude()); // -93.2323
参考
[1] geolite2-开源数据库
[2] GeoIP2 Java API