美文网首页
使用 GeoLite 实现IP精准定位(Java实现)

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

作者: Kjiang | 来源:发表于2015-11-29 20:03 被阅读3211次

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

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

    GeoLite2.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

    相关文章

      网友评论

          本文标题:使用 GeoLite 实现IP精准定位(Java实现)

          本文链接:https://www.haomeiwen.com/subject/qnqjhttx.html