java 通过request获取ip 在通过ip获取地址
来源:互联网 发布:淘宝客推广链接格式 编辑:程序博客网 时间:2024/05/01 14:23
import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.methods.GetMethod;import org.apache.commons.httpclient.params.HttpMethodParams;import org.apache.log4j.Logger;/** * @Description: ip工具类 */public class IpUtil { private static final Logger LOGGER = Logger.getLogger(IpUtil.class); private static final String UNKNOWN = "unknown"; private IpUtil() { } /** * 获取客户端ip * * @param request * @return */ public static String getIpAddr(HttpServletRequest request) { String ip = request.getHeader("X-Real-IP"); if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) { ip = request.getHeader("x-forwarded-for"); } if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) { ip = request.getHeader("http_client_ip"); } if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_X_FORWARDED_FOR"); } // 如果是多级代理,那么取第一个ip为需要的ip if (ip != null && ip.indexOf(",") != -1) { ip = ip.substring(ip.lastIndexOf(",") + 1, ip.length()).trim(); } return ip; } /** * 根据获取地区信息 * * @return String[] [0]国家 [1]省 [2]市 [3]县 [4]运营商 */ public static String[] getClientArea(HttpServletRequest request) { String ip = getIpAddr(request); //ip = "117.88.148.251"; request.getSession().setAttribute("ipAddress", ip); String url = "http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=" + (ip == null ? "" : ip); String returnString = ""; String[] areas = { "", "", "", "", "" }; GetMethod postMethod = new GetMethod(url); HttpClient client = new HttpClient(); // 设置编码字符 client.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8"); try { client.executeMethod(postMethod); returnString = StringUtil.fromUnicode(postMethod.getResponseBodyAsString()); Map<String, Object> result = JsonUtil.getMapFromJson(returnString); if (result.get("ret").toString().equals("1")) { // 国家 areas[0] = result.get("country").toString(); // 省 areas[1] = result.get("province").toString(); // 市 areas[2] = result.get("city").toString(); // 县 areas[3] = result.get("district").toString(); // 运营商 areas[4] = result.get("isp").toString(); } } catch (Exception e) { LOGGER.error("根据ip为:" + ip + "获取地区信息失败!", e); } return areas; }}
0 0
- java 通过request获取ip 在通过ip获取地址
- Java 通过Request请求获取IP地址
- java中通过request获取客户端IP地址
- Java 通过Request请求获取IP地址对应省份、城市
- 通过IP获取地址
- java通过IP地址获取MAC地址
- java web 通过request获取客户端IP
- java通过IP地址获取物理位置
- Java - 通过IP地址获取用户所在地
- Java - 通过IP地址获取用户所在地
- Java - 通过IP地址获取用户所在地
- java通过Ip地址获取地理位置
- java通过ip获取mac地址
- java通过ip获取网卡MAC地址
- java通过ip地址获取地理位置信息
- 通过域名获取IP地址
- 通过socket获取ip地址
- 通过IP获取MAC地址
- Codeforces 650C Table Compression (并查集+拓扑排序)
- 第13周项目1—分数类中的运算符重载 (1)
- 深入浅出Mybatis系列(二)---配置简介(mybatis源码篇)
- Navicat for mysql 远程连接 mySql数据库10061错误问题
- OC中的initialize方法
- java 通过request获取ip 在通过ip获取地址
- Maven项目目录结构显示方式
- Linux驱动学习(3-设备节点-手动创建)
- Image经典图片压缩方法
- 第15课:Spark Streaming源码解读之No Receivers彻底思考
- JS框架类型
- Markdown 新手指南
- Word一些功能的使用方法
- 生活处处皆学问,我从星巴克咖啡学到的5点架构经验