引用Geoip实现由IP地址获取国家城市等信息
需求
当我们知道用户ip的情况下,需要统计用户所属的国家/省份/城市等信息。
这时可以用开源的Geoip2 避免重复造轮子。
github地址:https://github.com/maxmind/GeoIP2-java
获取代码中 GeoLite2-City.mmdb 数据的官网(需要先登录注册):https://www.maxmind.com/en/accounts/746301/geoip/downloads
Step1: 获取mmdb数据库信息
离线获取ip信息需要数据库信息,数据库可以在官网下载。
maxmind数据库官网下载地址:https://www.maxmind.com/en/accounts/746301/geoip/downloads
下载之前需要先注册登录。然后找到如下图位置点击下载即可。
GeoLite2-City.mmdb附件信息:
Step2: 引pom编写工具类
pom添加如下引用(如果引用3.xx提示类错误的话,可以换成2.xx版本):
<!-- https://mvnrepository.com/artifact/com.maxmind.geoip2/geoip2 --><dependency><groupId>com.maxmind.geoip2</groupId><artifactId>geoip2</artifactId><version>2.16.1</version></dependency>
简单开发
public class IpUtil {private static final String ip2cityDataPath = "D:\\GeoLite2CityData\\GeoLite2-City_20220726\\GeoLite2-City.mmdb";public static void main(String[] args) {String ip = "47.111.xxx.xxx";try (DatabaseReader dr = new DatabaseReader.Builder(new File(ip2cityDataPath)).build()) {final CityResponse response = dr.city(InetAddress.getByName(ip));// 获取国家信息Country country = response.getCountry();System.out.println(country.getIsoCode()); // 'CN'System.out.println(country.getName()); // 'China'System.out.println(country.getNames().get("zh-CN")); // '中国'// 获取省份Subdivision subdivision = response.getMostSpecificSubdivision();System.out.println(subdivision.getName()); //ZhejiangSystem.out.println(subdivision.getIsoCode()); // ZJSystem.out.println(subdivision.getNames().get("zh-CN")); // 浙江省// 获取城市City city = response.getCity();System.out.println(city.getName()); // HangzhouPostal postal = response.getPostal();System.out.println(postal.getCode()); // 'null'System.out.println(city.getNames().get("zh-CN")); // 杭州Location location = response.getLocation();System.out.println(location.getLatitude()); // 30.2994} catch (Exception io) {io.printStackTrace();}} }
引用Geoip实现由IP地址获取国家城市等信息相关推荐
- android根据ip获取查询省份,通过IP地址获取省份城市位置信息
private String mResult = null; private String mProvinceName; //省份 private String mChCityName; //城市 p ...
- js通过IP地址获取所在城市
话不多说,直接贴代码! 将这段代码运行一下就OK了: <html xmlns="http://www.w3.org/1999/xhtml"> <head runa ...
- 6种根据IP地址获取相应城市信息的接口
发这篇文章的最主要的目的就是给大家分享一个 免费快捷根据IP地址获取相应城市信息的接口--腾讯接口 在找到个腾讯接口之前,我试也用了很多接口,比如:淘宝,新浪等,下面挨个介绍 (ps:$ip是IP地址 ...
- php ip 城市,php如何根据IP地址获取所在城市
本文主要和大家分享php如何根据IP地址获取所在城市,本文主要以代码的形式,希望能帮助到大家.<?php header('Content-Type:text/html;Charset=utf-8 ...
- 根据ip获取所在城市 php,PHP:根据IP地址获取所在城市
欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 if ( $useripFlag == chr( 2 ) ) { $AddrSeek = fread( $fd, 3 ): ...
- JAVA根据IP地址获取省份城市和经纬度(可获取国家名称 淘宝高德API如果是国外IP获取到的为空)
所需jar包maven地址: <!-- 根据ip获取位置 --><dependency><groupId>com.maxmind.geoip2</groupI ...
- js根据ip地址获取省份城市的方法
今天发现新浪的IP地址查询接口已经访问不了,也就是说不能用了,然后重新试了其他的,找到搜狐的ip地址可以用 不能用 新浪的IP地址查询接口 http://int.dpool.sina.com.cn/i ...
- 获取地区html代码,根据ip地址获取所在城市信息(省市县)代码
[实例简介] [实例截图] [核心代码] 获取ip地址所在城市 var showIP = function(ip, remote_ip_info ){ if(remote_ip_info['ret'] ...
- java 根据ip地址获取城市_Java 根据ip地址获取当前城市
maxmind免费数据库maven位置:用来获取所要用的数据库文件(GeoLite2-City.mmdb) org.elasticsearch geolite2-databases 20151029 ...
最新文章
- python图像直方图与直方图均衡化
- 获取height固定折叠元素真实高度方法
- Github git 命令下载加速
- SQLServer技巧
- 蚁群算法matlab vrp问题车辆限重,蚁群算法MATLAB解VRP问题
- 语音识别技术的发展历程,语音识别是如何工作的?语音识别资料概述
- python的数值类型和运算符_python学习笔记之数据类型---数字类型及运算符
- 七嘴八舌Google
- Atitit 存储方法大总结 目录 1. 存储方式分类	2 1.1. 按照数据分类为 结构化 半结构化 非结构化	2 1.2. 按照内外部可分类 内部存储和外部存储持久化	2 1.3. 按照本地远
- linux mysql 相关操作、问题
- java三种经典的比对方法_几种任务调度的 Java 实现方法与比较
- 数据、运营相关试题(三)【牛客网:数据运营试题广场】
- VMware vSphere Client虚拟化重装虚拟机系统步骤
- 关于RS232芯片和RS485芯片共用一个STM32串口的情况下如何设计电路
- adobe怎么统计字数,在Adobe Reader中统计PDF中的文字数
- “建木”萌芽,聚木成林
- 济南市公安局人口数据备份库项目(数据复制)之一
- 微信小程序 云存储 wx.cloud.downloadFile 下载并另存
- 发挥数字化平台优势,电子元器件采购商城系统助力企业改变固有低效流程
- 一篇文章,带你详细了解华为认证体系证书(二)
热门文章
- Unity 模型尺寸自适应
- Linux简介和开发环境
- 【Linux开发环境搭建】arm-linux-gnueabihf 交叉编译工具链安装
- (附源码)计算机毕业设计ssm房地产销售系统
- 第一次的博客 告诫自己及目标
- 聚云位智:挖掘有效数据价值,为企业万物互联打下基础
- 计算机逻辑模块,常用时序逻辑电路模块 《计算机结构与 及逻辑设计》课件.ppt...
- 概率中国一种没有语料字典的分词方法
- CI24R1小模块(内置天线)2.4G无线收发芯片
- urllib.parse.quote报错surrogates not allowed