获取ip所在城市

简介: 本文介绍了如何在SpringBoot应用中通过IP地址快速获取用户的国家、省份和城市信息。首先,通过引入GeoLite2 City数据库并整合相关依赖,接着下载并配置GeoLite2 City数据库文件。然后,创建地址获取工具类和Controller接口,最后进行测试以确保功能正常。此方法简单高效,适用于多种应用场景。

   有时候我们会有这样的需求,通过一个ip地址获取用户所在国家,省份和城市。接下来我会详细介绍在SpringBoot应用中如何快速实现该功能。


GeoLite2 City介绍

   GeoLite2 City是一个轻量数据库,它存储了常见ip地址与地理位置的对应关系,通过它我们可以轻松通过ip地址找到对应城市。所以在项目中只需整合它即可完成功能。

63b9d969d79ff55c638cf2d41b950a9.png

1.引入依赖

<dependency>

<groupId>com.maxmind.geoip2</groupId>

<artifactId>geoip2</artifactId>

<version>2.16.1</version>

</dependency>


2.下载GeoLite2 City数据库免费版

从 MaxMind 官网(https://dev.maxmind.com/geoip/geoip2/geolite2/)下载 GeoLite2-City.mmdb 数据库文件,并将其放置在项目的 resources 目录下。

因为官网是英文,而且需要注册,所以我这里提供了百度网盘下载地址:

通过百度网盘分享的文件:GeoLite2-City_20240816.tar.gz链接:https://pan.baidu.com/s/1NhX5yFMQAvPFzQavJiNi_g?pwd=yyds 提取码:yyds

代码结构如下:

adfea01921ddc9b66e901ca70c9bb80.png


3.编码

3.1 创建地址获取工具类

c2965c85e0beb3132744a528929f0ee.png

解释:该工具类提供一个方法,根据一个ip地址字符串获取所在国家、省份和城市,第一步先从类路径下加载数据库文件,第二步根据IP获取地址,由于该数据库是国外开源,地址库可能不全,所以当国家、省份、城市信息获取为空时,去淘宝ip地址获取网站重新获取地址封装结果并返回。

淘宝ip地址获取网址:


https://ip.taobao.com/

网址首页:

c7b1d4d9c623d3a2b3c3cf41f8682d0.png

淘宝网的接口请求地址打开控制台可以看到:

1e011a6e35f4a0c4a43815169e16431.png

该接口所需参数:

e659f8e5fcac1eff0e27c1b41f85bb0.png


3.2创建controller接口

c34458889c7da298cbdb9494768dc49.png

4.测试

浏览器发送请求测试:

366b0772b42d3b88449fa76ae572fc8.png

成功获取到结果。

相关文章
|
自然语言处理 搜索推荐 Java
号称elastic seaech 100多倍性能的Manticore search搜索引擎有多强
号称elastic seaech 100多倍性能的Manticore search搜索引擎有多强
2691 0
|
自然语言处理 安全 搜索推荐
强大的工具:IP归属地查询API
强大的工具: IP归属地查询API
2897 1
Java 通过IP获取对应的国家省份城市经纬度(离线文件方案)
一. 除了调用接口查询城市, 还可以通过离线文件查询城市, 使用GeoLite2 City库 二. 离线库下载地址: https://dev.maxmind.com/geoip/geoip2/geolite2/ 点击如下位置下载压缩文件 文件解压后有一个文件名为GeoLite2-City.
|
搜索推荐 Java 定位技术
Java实现利用GeoLite2-City.mmdb根据IP定位城市的方法
在城市,国家,地区等地理位置数据获取之后,你可以依指定的业务需求,来进行进一步的数据处理。例如,你可以设计一个应用,根据用户的 IP 地址来个性化地展示内容,或者用于分析网络请求的来源等。
2558 20
|
小程序 前端开发 算法
前端(十六)——微信小程序语音转文字,文字转语音功能的实现
前端(十六)——微信小程序语音转文字,文字转语音功能的实现
3416 0
|
SQL 数据库
在mybatis-plus怎么使用自定义的sql语句
在mybatis-plus怎么使用自定义的sql语句
1583 0
|
存储 安全 Java
Spring Boot 3 集成Spring AOP实现系统日志记录
本文介绍了如何在Spring Boot 3中集成Spring AOP实现系统日志记录功能。通过定义`SysLog`注解和配置相应的AOP切面,可以在方法执行前后自动记录日志信息,包括操作的开始时间、结束时间、请求参数、返回结果、异常信息等,并将这些信息保存到数据库中。此外,还使用了`ThreadLocal`变量来存储每个线程独立的日志数据,确保线程安全。文中还展示了项目实战中的部分代码片段,以及基于Spring Boot 3 + Vue 3构建的快速开发框架的简介与内置功能列表。此框架结合了当前主流技术栈,提供了用户管理、权限控制、接口文档自动生成等多项实用特性。
1401 8
|
XML 小程序 前端开发
小程序制作教程
小程序制作教程
2070 3
小程序制作教程
|
网络协议 Java API
SpringBoot整合Elasticsearch-Rest-Client、测试保存、复杂检索
这篇文章介绍了如何在SpringBoot中整合Elasticsearch-Rest-Client,并提供了保存数据和进行复杂检索的测试示例。
SpringBoot整合Elasticsearch-Rest-Client、测试保存、复杂检索
|
存储 Java 定位技术
【Java】根据IP地址获取省市
【Java】根据IP地址获取省市
1842 1

热门文章

最新文章