IP定位工具

相关代码

百度IP定位API

IP定位测试接口

/**
 * IPUtils
 *
 * @author 伍磊
 */
public class IpUtils {

    /**
     * 获取请求接口ip地址
     * @return java.lang.String
     */
    public static String getIpAddr() {
        javax.servlet.http.HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();

        String 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();
        }
        return ip;
    }

    /**
     * 根据ip定位到实际地址 若是定位失败 则返回"-"
     * @param ip ip
     * @return java.lang.String
     */
    public static String getIpAddr(String ip) {
        String ipAddress = Constant.NONE;

        //1 校验
        if (StringUtils.isBlank(ip)) {
            return Constant.NONE;
        }

        //2 设置参数和header
        Map<String, String> map = new HashMap<>();
        Map<String, String> headers = new HashMap<>();
        map.put("ip", ip);
        // 设置秘钥
        map.put("ak", Constant.AK_SECRET_KEY);
        headers.put("Content-Type", "application/json;charset=utf-8");

        //3 调用接口
        String response;
        try {
            response = HttpClientExecutor.doPost(Constant.LOCATE_API, headers, map, 2000);
        } catch (IOException e) {
            e.printStackTrace();
            LogUtils.error(LogAction.ERROR, "请求根据ip定位具体地址接口时出现异常。。。");
            return ipAddress;
        }

        //4 处理返回
        JSONObject jsonObject = JSONObject.parseObject(response);
        Object status = jsonObject.get("status");
        if (Objects.equals(status, Constant.INT_ZERO)) {
            // 成功响应 处理结果
            String content = jsonObject.get("content").toString();
            JSONObject object = JSONObject.parseObject(content);
            ipAddress = object.get("address").toString();
        }

        return ipAddress;
    }
}


代码相关常量

/**
     * int-0
     */
    public static final Integer INT_ZERO = 0;

    /**
     * -
     */
    public static final String NONE = "-";

    /**
     * ak秘钥 (获取ip地址)
     */
    public static final String AK_SECRET_KEY = "OGNLmlzGl46KE7HU0hblDk2zXPPv0w5v";

    /**
     * 百度接口api (定位ip地址接口)
     */
    public static final String LOCATE_API = "http://api.map.baidu.com/location/ip";
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • IP相关 IP:Internet Protocol网际协议,作用与TCP/IP模型中的互联网层,也就是OSI中的网...
    Shirley_y阅读 374评论 0 2
  • 1、URI 和 URL URI 统一资源标识符(Uniform Resource Identifier),用于标识...
    MingJiang3阅读 353评论 0 0
  • 关于获取iPhone的WiFi地址、UUID、IP相关方法 经常我们会遇到获取iPhone的WiFi地址、UUID...
    zero_zql阅读 1,902评论 0 0
  • 通信质量控制 控制通信质量的机制用RSVP技术,它包括两个内容,一是提供点对点的详细优先控制,另一个是提供相对较粗...
    Yix1a阅读 193评论 0 0
  • 去长沙,两小时车程,我常常会看着沿途的景色,任思绪不受控制…… 毕业之后,我再没有回过农大,哪怕我在那座城市来来往...
    拥抱幸福的姗姗子阅读 316评论 0 5