获取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

成功获取到结果。

相关文章
|
4月前
|
网络协议 Linux 网络虚拟化
什么是 DHCP?为什么要使用它?
【8月更文挑战第4天】
1761 12
什么是 DHCP?为什么要使用它?
|
6月前
|
网络协议
DHCP服务详解
DHCP服务详解
309 0
|
7月前
|
网络协议 Shell Linux
DHCP服务
DHCP协议用于集中管理分配IP地址,简化网络管理员工作,防止IP冲突,便于网络结构调整和客户端配置。在Redhat 9环境下,通过yum安装DHCP服务器,配置服务端包括编辑配置文件设定IP范围、DNS和网关等信息,启动并设置DHCP服务开机启动。客户端关闭VMware自带DHCP,修改连接为自动获取,成功从服务器获取新IP地址。
106 1
|
网络协议 Windows
DHCP 服务
了解DHCP服务的好处,分配方式,以及租约条件等
245 0
DHCP 服务
|
算法 安全 程序员
趣聊 DHCP ,有点意思(二)
哈喽小伙伴们大家好啊,这里是 cxuan 计算机网络连载系列的文章第 11 篇,本篇文章我们来聊一聊 DHCP 协议。在聊之前,先想象一个场景。 你现在站在地铁上或者坐在办公室中,你的手机也好,电脑也好都有一个 IP 地址,假如这个 IP 地址是你手动输入的,你需要写下面这些东西 ……
趣聊 DHCP ,有点意思(二)
|
网络虚拟化 网络协议