GeoLite2可以离线使用,而且数据还具有丰富性。之前用纯真网下载下来的静态库,但是感觉有些笨重(需要搞一个本地的数据库,把数据先储存到数据库有兴趣的小伙伴可以玩玩)数据库脚本下载地址:下载地址,包含50多万个公网IP和对应的城市,运营商(不建议,读取时间稍微有点长)

这里着重讲解的是通过GeoLite2-City.mmdb获取IP的信息的,

使用DatabaseReader.Builder读取GeoLite2数据库即可。

GeoLite2-City.mmdb静态文件下载地址:下载地址

话不多说,直接上代码

引入依赖

<dependency><groupId>com.maxmind.geoip2</groupId><artifactId>geoip2</artifactId><version>2.15.0</version>
</dependency>

编写函数 以及调用函数

public class GeoLite2 {public static File file = new File("");private static GeoLite2 GetAddress;/**** @description: 获得国家* @param reader GeoLite2 数据库* @param ip ip地址* @return* @throws Exception*/public static String getCountry(DatabaseReader reader, String ip) throws Exception {return reader.city(InetAddress.getByName(ip)).getCountry().getNames().get("zh-CN");}/**** @description: 获得省份* @param reader GeoLite2 数据库* @param ip ip地址* @return* @throws Exception*/public static String getProvince(DatabaseReader reader, String ip) throws Exception {return reader.city(InetAddress.getByName(ip)).getMostSpecificSubdivision().getNames().get("zh-CN");}/**** @description: 获得城市* @param reader GeoLite2 数据库* @param ip ip地址* @return* @throws Exception*/public static String getCity(DatabaseReader reader, String ip) throws Exception {return reader.city(InetAddress.getByName(ip)).getCity().getNames().get("zh-CN");}/**** @description: 获得经度* @param reader GeoLite2 数据库* @param ip ip地址* @return* @throws Exception*/public static Double getLongitude(DatabaseReader reader, String ip) throws Exception {return reader.city(InetAddress.getByName(ip)).getLocation().getLongitude();}/**** @description: 获得纬度* @param reader GeoLite2 数据库* @param ip ip地址* @return* @throws Exception*/public static Double getLatitude(DatabaseReader reader, String ip) throws Exception {return reader.city(InetAddress.getByName(ip)).getLocation().getLatitude();}public static void main(String[] args) throws Exception {System.out.println(new Date().getTime());// 创建 GeoLite2 数据库///Users/apple/Desktop/GeoLite2-City.mmdb ,文件的存放路径//Windows环境切换到自己的文件存放路径即可File file = new File("/Users/apple/Desktop/GeoLite2-City.mmdb");// 读取数据库内容DatabaseReader reader = new DatabaseReader.Builder(file).build();// 访问IPString ip = "14.5.6.2";String site = "国家:"+GetAddress.getCountry(reader, ip) + "\n省份:" + GetAddress.getProvince(reader, ip) + "\n城市:" + GetAddress.getCity(reader, ip)+ "\n经度:" + GetAddress.getLongitude(reader, ip)+ "\n纬度:" + GetAddress.getLatitude(reader, ip);System.out.println(site);System.out.println(new Date().getTime());}
}

打印结果

Java通过GeoLite2-City.mmdb进行IP信息查询地理定位和经纬度相关推荐

  1. IP信息查询API接口,免费好用

    1.前言 IP信息查询接口,能实现获取访问者当前ip信息和指定信息ip信息.这个接口的主要特点是,能获取ip地址所在省市信息和运营商信息. 2.接口明细 注意:app_id和app_secret是临时 ...

  2. 基于ip的手机地理定位

    现在lbs服务比较火,基本上都需要定位用户的地理信息,用户地理信息一般是通过gps来定位实现的,那么假如 用户的gps坏了,或者没有开启,那么怎么获得用户的地理信息的呢?替代的办法就是可以获得手机真实 ...

  3. java 豆瓣_java 语言实现豆瓣电影信息查询

    豆瓣上面有很多电影,有时候要查看个电影信息,去豆瓣搜下还是很方便的,但是如何通过接口的形式来查看豆瓣电影,这对于很多网站.app其实是非常实用的功能,这里笔者附上一个java实现的豆瓣电影信息获取的代 ...

  4. 豆瓣电影java代码_java语言实现豆瓣电影信息查询

    正版现货疯狂java讲义第5李刚教材 66元 包邮 (需用券) 去购买 > 豆瓣上面有很多电影,有时候要查看个电影信息,去豆瓣搜下还是很方便的,但是如何通过接口的形式来查看豆瓣电影,这对于很多网 ...

  5. 【Java】StudentsInfoQuery(简单的学生信息查询系统)

    周末作业,写的草草,BUG很多,直接贴代码. 基于文本文档的,不是数据库. 功能极其有限,也没有用WindowBuilder. 教师查询窗口 package wh.one;import java.aw ...

  6. 工具及方法 - 查询IP信息

    IP信息查询网站: Comprehensive IP address data, IP geolocation API and database - IPinfo.io 这个网站提供最稳定.准确和深入 ...

  7. 简单航班查询系统java_基于jsp的航班信息查询-JavaEE实现航班信息查询 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的航班信息查询, 该项目可用各类java课程设计大作业中, 航班信息查询的系统架构分为前后台两部分, 最终实现在线上 ...

  8. Android中由IP地址查询经纬度坐标的实例

    大家都知道,根据IP地址就可以知道它所在的具体位置,在Android中同样可以由IP地址得到它的位置,即具体的地理经纬度坐标. 本文就直接以代码的方式演示如何根据IP地址查询地理经纬度坐标位置,下面的 ...

  9. 基于android的旅游信息查询系统APP(ssm+uinapp+Mysql)

    网络的广泛应用给生活带来了十分的便利.所以把旅游信息查询管理与现在网络相结合,利用java技术建设基于安卓的旅游信息查询系统,实现旅游信息查询的信息化.则对于进一步提高旅游信息查询管理发展,丰富旅游信 ...

  10. Android根据IP获取地理位置,精确到经纬度

    摘要:每一个联网的设备都有一个IP地址,移动设备也不例外,如何定位Android手机当前的地理位置呢?很简单,我们依然可以利用 IP地址来获取Android手机的当前位置,可以精确到经纬度. 本文就直 ...

最新文章

  1. dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb3.4-redis3(十)之Spring MVC中使用 Swagger2 构建Restful API...
  2. Rolling element bearing diagnostics using the Case Western Reserve University data-学习笔记
  3. python 复制文件夹内容 并结构一致_Python-移动和覆盖文件和文件夹
  4. mysql怎么按年份分组_mysql - MYSQL按ID分组,但根据最近的年份进行拉取 - SO中文参考 - www.soinside.com...
  5. linux 添加网关 多张,linux – 更改默认网关,多个NIC
  6. 词嵌入:探索解释和利用
  7. 01_Redis基础
  8. 谷歌不支持调用摄像头麦克风_谷歌突然推出Android 11开发者预览版 新版带来部分新功能和改进...
  9. 想创业就去创,愿意打工就去上班打工,每个人都有每个人的活法
  10. 利用logrotate系统工具切割tomcat日志
  11. Win7性能优化:解决多核处理器兼容问题
  12. 设置网页地址栏小图标
  13. MAC PHP集成环境安装MAMP
  14. Axure知识点:如何制作输入关键词模糊搜索功能?
  15. 开发一个APP系统软件需要多少钱及需要多长开发周期
  16. android banner指示器高度,Android 广告轮播 -ConvenientBanner 指示器大小、bottomMargin,leftMarfin的修改。...
  17. 汉化+破解Substance Painter 2019 macv2019.1.0图文展示
  18. Mogafx英美对有望结束连续两日的跌势
  19. 【贪心算法】加勒比海盗船——最优装载问题
  20. 公司开除并在离职证明上贬低被程序员怒怼,网友:总有耿直的员工

热门文章

  1. C#数组和集合类详解
  2. linux fstab 远程,linux下fstab文件详解
  3. 纬地道路纵断面设计教程_道路BIM模型快速生成
  4. cad图纸批量转换pdf
  5. 51单片机智能循迹小车的通俗易懂讲解
  6. 夏普Sharp AR-6120N 一体机驱动
  7. 苏州软件企业如何办理自产软件产品增值税即征即退
  8. PHY寄存器驱动调试总结
  9. javaweb学习笔记(XML基础)
  10. OTSU算法 (大津算法)理解代码