您现在的位置是:网站首页> 编程开发> java 编程开发
java中通过ip获取地址
bean2021-11-11【java】 1506人已围观
简介获取IP地址 使用Nginx等反向代理软件, 则不能通过request.getRemoteAddr()获取IP地址 如果使用了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP地址,X-Forwarded-For中第一个非unknown的有效IP字符串,则为真实IP地址 <dependency>  
java中通过ip获取地址
最后更新:2021-11-11 18:44:15
推荐指数:
获取IP地址 使用Nginx等反向代理软件, 则不能通过request.getRemoteAddr()获取IP地址 如果使用了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP地址,X-Forwarded-For中第一个非unknown的有效IP字符串,则为真实IP地址 <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>${hutool.version}</version> </dependency>
package com.cloud.www.util; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.cloud.www.model.domain.IpProvinceDomain; import javax.servlet.http.HttpServletRequest; public class IpUtils { /** * 获取IP地址 * <p> * 使用Nginx等反向代理软件, 则不能通过request.getRemoteAddr()获取IP地址 * 如果使用了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP地址,X-Forwarded-For中第一个非unknown的有效IP字符串,则为真实IP地址 */ public String getIpAddr(HttpServletRequest request) { String ip = null; try { ip = request.getHeader("x-forwarded-for"); if (StrUtil.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if (StrUtil.isEmpty(ip) || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if (StrUtil.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_CLIENT_IP"); } if (StrUtil.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_X_FORWARDED_FOR"); } if (StrUtil.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } if (StrUtil.isNotEmpty(ip) && ip.contains("0:0:0")) { return ""; } } catch (Exception e) { } return ip; } //获取省市县及网络 public IpProvinceDomain getProvince(String ip) { if (StrUtil.isEmpty(ip)) { return null; } if (ip.equals("127.0.0.1")) { return null; } String url = "http://api.map.baidu.com/location/ip?ak=NlEIUMs5xPxRaiCn9ayyNp9rxXZLZmdH&ip=" + ip; String s = HttpUtil.get(url); JSONObject jsonObject = JSONUtil.parseObj(s); if (jsonObject == null || jsonObject.get("address") == null || StrUtil.isEmpty(Convert.toStr(jsonObject.get("address")))) { return null; } String address = Convert.toStr(jsonObject.get("address")); // String[] arrProvince = StrUtil.split(address, "\\|"); String[] arrProvince = address.split("\\|"); IpProvinceDomain ipProvinceDomain = new IpProvinceDomain(); ipProvinceDomain.setCountry(arrProvince[0]); ipProvinceDomain.setProvinceName(arrProvince[1]); ipProvinceDomain.setCity(arrProvince[2]); return ipProvinceDomain; } } //开始调用
() (request, response) { =IpUtils(); ipAddr = .getIpAddr(request); (.(ipAddr)){ ipAddr=; } = .getProvince(ipAddr); R(); }
很赞哦! (0)
文章评论
验证码: