Java根据ip地址获取归属地
由于最近比较忙,所以一直没有更新博客。今天有一点点时间,来分享一下项目中用到的一个需求功能点。
需求描述:获取用户真实ip和ip归属地
实现效果:
重点: IP地址工具类
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletRequest;public class IPUtils {private static Logger logger = LoggerFactory.getLogger(IPUtils.class);/*** 获取IP地址* * 使用Nginx等反向代理软件, 则不能通过request.getRemoteAddr()获取IP地址* 如果使用了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP地址,X-Forwarded-For中第一个非unknown的有效IP字符串,则为真实IP地址*/public static String getIpAddr(HttpServletRequest request) {String ip = null;try {ip = request.getHeader("x-forwarded-for");if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("Proxy-Client-IP");}if (StringUtils.isEmpty(ip) || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("WL-Proxy-Client-IP");}if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("HTTP_CLIENT_IP");}if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("HTTP_X_FORWARDED_FOR");}if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {ip = request.getRemoteAddr();}} catch (Exception e) {logger.error("IPUtils ERROR ", e);}//使用代理,则获取第一个IP地址if(StringUtils.isEmpty(ip) ) {if(ip.indexOf(",") > 0) {ip = ip.substring(0, ip.indexOf(","));}}return ip;}/*** 根据ip获取归属地* @param ip* @return*/public static String getAddress(String ip) {String url = "http://ip.ws.126.net/ipquery?ip=" + ip;String str = HttpUtil.get(url);if(!StrUtil.hasBlank(str)){String substring = str.substring(str.indexOf("{"), str.indexOf("}")+1);JSONObject jsonObject = JSONUtil.parseObj(substring);String province = jsonObject.getStr("province");String city = jsonObject.getStr("city");return "ip:"+ ip + ",省份:" + province + ",城市:" + city;}return null;}}
Java根据ip地址获取归属地相关推荐
- java根据ip地址获取城市地域信息
java根据ip地址获取城市地域信息 这里提供两个公开的接口,一个是阿里的,一个是新浪的 http://ip.taobao.com/service/getIpInfo.php?ip=123.139.9 ...
- java 根据IP地址获取地理位置
来源:http://www.ipplus360.com/tech/api/ 来源:http://blog.csdn.net/Cryhelyxx/article/details/40862101 精确查 ...
- Java 根据IP地址获取城市(ip2region)
根据IP地址获取城市(ip2region) Ip2region是什么? Ip2region特性 99.9%准确率 标准化的数据格式 体积小 查询速度快 多查询客户端的支持 maven集成 小坑 Ip2 ...
- 【转载】 java根据ip地址获取详细地域信息
互联网有很多接口可以实现通过ip查询到具体的位置,如下: 通过淘宝IP地址库获取IP位置 1. 请求接口(GET):http://ip.taobao.com/service/getIpInfo.php ...
- java通过ip地址获取相应对应的城市
发现了一比较好的本地ip对应地址的库资源文件--做一下笔记. 官方网站 https://dev.maxmind.com/geoip/geoip2/geolite2/ 这里提供了免费的库文件,还有很好的 ...
- JAVA根据IP地址获取省份城市和经纬度(可获取国家名称 淘宝高德API如果是国外IP获取到的为空)
所需jar包maven地址: <!-- 根据ip获取位置 --><dependency><groupId>com.maxmind.geoip2</groupI ...
- java 根据ip地址获取地理位置及运营商。
1.基于淘宝API /** * 根据ip获取城市(运营商)名称 * @param ip * @return * @throws Exception * ...
- java 根据ip地址获取城市_Java 根据ip地址获取当前城市
maxmind免费数据库maven位置:用来获取所要用的数据库文件(GeoLite2-City.mmdb) org.elasticsearch geolite2-databases 20151029 ...
- JAVA程序 通过IP地址 获取MAC地址
转载自:https://blog.csdn.net/chwshuang/article/details/46958719 叙述 我们都知道通过在电脑上敲 cmd 后,输入ipconfig -all 来 ...
最新文章
- NLP实践:对话系统技术原理和应用
- mysql flush 使用
- 计算机第一课 教案 纪律,信息技术开学第一课-纪律
- python多个函数_什么是在Python中使用多个构造函数的干净的、pythonic的方法?
- php如何加密图片,php实现图片加密解密,支持设置密码 (两年后版本!)
- Hive之 hive的三种使用方式(CLI、HWI、Thrift)
- 在哪里学python-学Python从哪里开始?
- Android开发之ListView中Adapter的优化
- CSS 标签权重判断的方式
- 屏幕录像软件camtasia2022汉化版好用的录屏软件
- 校园智能安防监控解决方案
- 安装mentohust 64位
- 免Fan,国内直接访问,Instagram!文末还有…………
- 天地图2021版正式发布,清晰程度非常了得
- Android面试必过——Android常见的问题
- html5实现待机动画的效果
- linux su无效_Linux下su命令无反应的解决办法
- 楼天成回忆录 ACRush
- 浅谈赢得值理论的运用-Oracle p6
- Kali普通账户如何获取root管理员权限并切换中文?
热门文章
- Python后台运行 -- nohup python xxx.py
- 烤仔观察 | SEC 重拳出击,Brad Garlinghouse 能否成为拯救 Ripple 的关键先生?
- 易语言实现视频播放功能
- VM上linux突然断网解决办法
- Ubuntu下运行.sh文件
- 周鸿祎评互联网大佬编程能力:我可以排前三
- Linux中rm命令介绍
- Thinking in java:多线程
- WooCommerce Bookings 电子商务预订系统评测 – 创建WordPress预订系统有多好?
- 下面属于python内置对象的有哪些_python练习题-写一个函数,打印所有包含copy方法的内置对象...