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

成功获取到结果。

相关文章
|
JSON API PHP
Python/PHP:免费IP归属地查询接口和通过ip获取大致位置信息
Python/PHP:免费IP归属地查询接口和通过ip获取大致位置信息
1860 0
|
自然语言处理 安全 搜索推荐
强大的工具:IP归属地查询API
强大的工具: IP归属地查询API
2510 1
|
Java 容器
SpringBoot读取resources下的文件以及resources的资源路径
SpringBoot读取resources下的文件以及resources的资源路径
679 0
|
10月前
|
搜索推荐 Java 定位技术
Java实现利用GeoLite2-City.mmdb根据IP定位城市的方法
在城市,国家,地区等地理位置数据获取之后,你可以依指定的业务需求,来进行进一步的数据处理。例如,你可以设计一个应用,根据用户的 IP 地址来个性化地展示内容,或者用于分析网络请求的来源等。
1774 20
|
算法 JavaScript Java
使用强大的离线IP地址定位库ip2region获取城市信息
ip2region - 准确率99.9%的离线IP地址定位库,0.0x毫秒级查询,ip2region.db数据库只有数MB,提供了java、php、c、python、nodejs、golang、c#等查询绑定和Binary,B树,内存三种查询算法。
使用强大的离线IP地址定位库ip2region获取城市信息
|
8月前
|
Web App开发 存储 缓存
如何精准清除特定类型或标签的缓存数据?
如何精准清除特定类型或标签的缓存数据?
661 57
|
存储
JavaWeb如何获取当前访问IP
JavaWeb如何获取当前访问IP
387 0
|
6月前
|
消息中间件 Ubuntu Java
SpringBoot整合MQTT实战:基于EMQX实现双向设备通信
本教程指导在Ubuntu上部署EMQX 5.9.0并集成Spring Boot实现MQTT双向通信,涵盖服务器搭建、客户端配置及生产实践,助您快速构建企业级物联网消息系统。
2342 1
|
API 定位技术
查IP[查指定IP归属地]免费API接口教程
该API用于查询指定IPv4地址的归属地信息,支持POST和GET请求。需提供用户ID和KEY,可选填查询IP,默认为请求接口IP。返回信息包括状态码、地理位置及运营商等。示例请求和响应详见文档。
2656 3
|
JSON 定位技术 数据格式
根据现有IP地址获取其地理位置(省份,城市等)的方法
根据现有IP地址获取其地理位置(省份,城市等)的方法
1709 0

热门文章

最新文章