使用ip2region获取客户端地区

目录

从gitee拉取ip2region.xdb资源文件

 写测试类

注意要写对资源路径

 本地测试结果

​编辑 远端测试结果


从gitee拉取ip2region.xdb资源文件

git clone https://gitee.com/lionsoul/ip2region.git

 将xdb放入resources资源文件夹

使用ip2region获取客户端地区_第1张图片

引入依赖 


	org.lionsoul
	ip2region
	2.7.0


 

写测试类

     private Searcher searcher;
    
    @GetMapping("test")
    @ApiOperation("test")
    public String test() throws IOException  {
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        String ipAddress = null;
        try {
            // 获取请求客户端的ip
            ipAddress = request.getHeader("x-forwarded-for");
            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
                ipAddress = request.getHeader("Proxy-Client-IP");
            }
            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
                ipAddress = request.getHeader("WL-Proxy-Client-IP");
            }
            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
                ipAddress = request.getRemoteAddr();
                if (ipAddress.equals("127.0.0.1")||ipAddress.equals("0:0:0:0:0:0:0:1")) {
                    ipAddress = "127.0.0.1";
                }
            }
            // 判断ip是否符合规格
            if (ipAddress != null && ipAddress.length() > 15) { // "***.***.***.***".length()
                // = 15
                if (ipAddress.indexOf(",") > 0) {
                    ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
                }
            }
        } catch (Exception e) {
            ipAddress="";
        }

        if ("127.0.0.1".equals(ipAddress) || ipAddress.startsWith("192.168")) {
            return "局域网 ip";
        }
        String dbPath;
        if (searcher == null) {
            try {
                // 加载ip2region 文件
                searcher=Searcher.newWithFileOnly("pipayshop-api/src/main/resources/ipdb/ip2region.xdb");

            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        String region = null;
        String errorMessage = null;
        try {
            // 获取地区
            region = searcher.search(ipAddress);
        } catch (Exception e) {
            errorMessage = e.getMessage();
            if (errorMessage != null && errorMessage.length() > 256) {
                errorMessage = errorMessage.substring(0,256);
            }
            e.printStackTrace();
        }
        // 输出 region
        return region;
    }

注意要写对资源路径

本地的资源路径

使用ip2region获取客户端地区_第2张图片

远端服务器资源路径(需要与你写的路径一一对应,不然找不到文件)

使用ip2region获取客户端地区_第3张图片

 本地测试结果

使用ip2region获取客户端地区_第4张图片 远端测试结果

使用ip2region获取客户端地区_第5张图片

你可能感兴趣的:(工作问题总结,数据库,spring,boot,java)