什么是ip2region
gitee: https://gitee.com/lionsoul/ip2region
ip2region是一个离线的ip地址定位库
使用方法
-
引入依赖
<!-- ip2region --> <dependency> <groupId>org.lionsoul</groupId> <artifactId>ip2region</artifactId> <version>1.7.2</version> </dependency>
-
将ip2region.db文件放入resources文件夹中
文件下载地址 可去上面gitee仓库中下载
-
测试
private static DbSearcher searcher; private static Method method; @Test void test() { try { InputStream inputStream = new ClassPathResource("/ipdb/ip2region.db").getInputStream(); //将 ip2region.db 转为 ByteArray byte[] dbBinStr = FileCopyUtils.copyToByteArray(inputStream); DbConfig dbConfig = new DbConfig(); searcher = new DbSearcher(dbConfig, dbBinStr); //二进制方式初始化 DBSearcher,需要使用基于内存的查找算法 memorySearch method = searcher.getClass().getMethod("memorySearch", String.class); }catch (Exception e){ e.printStackTrace(); } String ip = "102.223.152.44"; if (ip == null || !Util.isIpAddress(ip)) { System.err.println("null"); } try { DataBlock dataBlock = (DataBlock) method.invoke(searcher, ip); String ipInfo = dataBlock.getRegion(); if (!StringUtils.isEmpty(ipInfo)) { ipInfo = ipInfo.replace("|0", ""); ipInfo = ipInfo.replace("0|", ""); } System.err.println(ipInfo); } catch (Exception e) { System.err.println("getCityInfo exception"); } }