• 通过ip查询ip地址


    `

    /**
     * 获取IP地址
     * <p>
     * 使用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);
        }
        return ip;
    }
    
    //根据IP地址获取当前登录的地点
    public static String getAddressByIp(String ipAddress) {
        String url = "http://ip.taobao.com/service/getIpInfo.php?ip=" + ipAddress;
        String result = HttpUtil.get(url, CharsetUtil.CHARSET_UTF_8);
        JSONObject jsonObject = JSONUtil.parseObj(result);
        StringBuffer sb = new StringBuffer();
        sb.append(jsonObject.getJSONObject("data").get("country") + " . ");
        sb.append(jsonObject.getJSONObject("data").get("region") + " . ");
        sb.append(jsonObject.getJSONObject("data").get("city") + " . ");
        sb.append(jsonObject.getJSONObject("data").get("county") + " . ");
        sb.append(jsonObject.getJSONObject("data").get("isp"));
        return sb.toString();
    }
    
    //根据IP地址获取当前登录的地点
    public static String getBaiduAddressByIp(String ipAddress) {
        String url = "https://api.map.baidu.com/location/ip?ip=" + ipAddress+"&ak=aHOcodL8pG2gWoRj6BVPAXOKqa6IbzvU&coor=bd09ll";
        String result = HttpClientUtil.ajaxGet(url);
        JSONObject jsonObject = JSONUtil.parseObj(result);
        if(jsonObject.get("address")==null){
            return "未知地址";
        }
        return ((JSONObject)jsonObject.get("content")).get("address").toString();
    
    }
    

    }
    `

  • 相关阅读:
    阿里云服务器 FTP配置图文教程和添加两个FTP站点
    SAP 用事务码SQVI 做简单报表 .
    公司间联动权限解决方案
    table合并单元格colspan和rowspan .
    js更改input标签的读写属性
    小div在大div中垂直居中,以及div在页面垂直居中
    UI控件(UITextField)
    node基本理念(事件、多线程、进程)
    MyBatis(跨表查询)
    MyBatis(增删改查)
  • 原文地址:https://www.cnblogs.com/yoyoyu/p/13930046.html
Copyright © 2020-2023  润新知