java 根据 ip地址获取城市定位的相关解决方案

最近一段时间,楼主接到了一个比较简单的小需求。要根据提供的ip地址(ipv4,ipv6)定位到该ip所在的城市。包括国外。

在查找了一系列方法中, 汇总一下楼主知道的一些解决方案。

方案一:com.jthinking.common   ipinfo

git地址:ip-info: IP地址库Java版本。IP地理位置获取,支持获取IPv4、IPv6地址信息。包括:国家中文名称、中国省份中文名称、详细地址、互联网服务提供商、是否是国外、纬度、经度。

使用方法在git里写的都比较清楚,楼主就不一一介绍了

优点:国内ip都比较准确,支持ipv4,ipv6。可以获取经纬度。返回结果比较规范

缺点:不支持国外地址。国外只能识别到国家。

方案二:ip2region

这个是搜索最多的结果,据说准确率高达99%。原理也是解析本地文件。需要把.xdb文件下载到本地,然后读取该文件解析

git地址:ip2region: Ip2region (2.0 - xdb) 是一个离线 IP 数据管理框架和定位库,支持亿级别的数据段,10微秒级别的查询性能,提供了许多主流编程语言的 xdb 数据管理引擎的实现。

使用方法在git里写的都比较清楚,楼主就不一一介绍了

优点:国内ip都比较准确,支持ipv4。返回结果相对规范。

缺点:不支持ipv6.国外某些地址会定位失败。获取经纬度的方法楼主没发现。

方案三:ip-api.com

这个是一个国外的ip定位网站,实际使用下来感觉:能用,但不可靠

官网:IP-API.com - Geolocation API

有根据json传参直接获取结果的api。

优点:操作简单,请求即可。支持ipv4,ipv6。支持国内外ip定位。支持中英文。支持批量获取。

缺点:定位不准,经常不准。国内很多ip定位可能会差的很多。返回结果不一定规范。生产环境可能会出现请求慢的情况。

官网实例:

批量+中文请求示例:

方案四:一些其他官方api获取方法

比如:高德定位,腾讯定位,百度定位。这些都可以通过官网地址进入。关键字就搜这几个。

楼主这里仅展示腾讯定位的使用方法:具体操作可以查看官方文档。应该是免费的。

优缺点:大厂肯定很权威啦。个人觉得可以无脑支持。这里楼主没使用。应该是不支持国外地址

postman请求:

最后的总结:感觉定位的准准确确有些困难,尤其是国外地址。楼主没找到完美的解决方案,最好根据业务选择方案,或者多者结合。可能实现的结果有限,有些事后不如试着让业务妥协一下。

目录

方案一:com.jthinking.common   ipinfo

方案二:ip2region

方案三:ip-api.com

方案四:一些其他官方api获取方法


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值