新报: 根据IP获取物理地址不需要调用接口啦
Posted yangbuyi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新报: 根据IP获取物理地址不需要调用接口啦相关的知识,希望对你有一定的参考价值。
一、 复制data文件夹到自己的项目当中
可以进行加载到这个文件即可 博主放入在项目的根目录当中
请移步Gitee pull 该文件 https://gitee.com/yangbuyi/ip_file
获取点击量来一波 https://www.yangbuyi.top/login.html
带入maven依赖 因为这个编辑器的原因 复制依赖 显示不出来淦!!!! 图片自己打吧
org.lionsoul ip2region 1.7.2
二、最重要的一步 编译地理位置
找到自己的项目地址
执行打开cmd 执行这段代码
java -Dfile.encoding=utf-8 -jar dbMaker-1.2.2.jar -src ./data/ip.merge.txt -region ./data/global_region.csv
java -Dfile.encoding=utf-8 -jar dbMaker-1.2.2.jar -src ./data/ip.merge.txt -region ./data/global_region.csv
请跟着一步步来
代码开始 创建iputils
package top.yangbuyi.system.webapi; import org.lionsoul.ip2region.DataBlock; import org.lionsoul.ip2region.DbConfig; import org.lionsoul.ip2region.DbSearcher; import org.lionsoul.ip2region.Util; import java.io.File; import java.io.UnsupportedEncodingException; import java.lang.reflect.Method; import java.net.URLDecoder; /** * description: 杨不易网站 :www.yangbuyi.top * program: yangbuyi-erp-2020 * ClassName: iputils * create: 2020-07-10 09:20 * * @author: yangbuyi * @since: JDK1.8 * @iputils: **/ /** * 具体请看 SQL当中的 data文件 和jar包 * 通过下面语句进行 编译 地理位置 * java -jar dbMaker-1.2.2.jar -src ./data/ip.merge.txt -region ./data/global_region.csv */ public class iputils { public static String getCityInfo(String ip) throws UnsupportedEncodingException { //db String dbPath = new File("SQL/data/ip2region.db").getPath(); dbPath = URLDecoder.decode(dbPath, "UTF-8"); File file = new File(dbPath); if (file.exists() == false) { System.out.println("Error: Invalid ip2region.db file"); } //查询算法 int algorithm = DbSearcher.BTREE_ALGORITHM; //B-tree //DbSearcher.BINARY_ALGORITHM //Binary //DbSearcher.MEMORY_ALGORITYM //Memory try { DbConfig config = new DbConfig(); DbSearcher searcher = new DbSearcher(config, dbPath); //define the method Method method = null; switch (algorithm) { case DbSearcher.BTREE_ALGORITHM: method = searcher.getClass().getMethod("btreeSearch", String.class); break; case DbSearcher.BINARY_ALGORITHM: method = searcher.getClass().getMethod("binarySearch", String.class); break; case DbSearcher.MEMORY_ALGORITYM: method = searcher.getClass().getMethod("memorySearch", String.class); break; } DataBlock dataBlock = null; if (Util.isIpAddress(ip) == false) { System.out.println("Error: Invalid ip address"); } dataBlock = (DataBlock) method.invoke(searcher, ip); String decode = URLDecoder.decode(dataBlock.getRegion(), "UTF-8"); return decode; } catch (Exception e) { e.printStackTrace(); } return null; } public static void main(String[] args) throws Exception { System.err.println(iputils.getCityInfo("106.18.167.102")); } }
最后 测试代码
太累了吧!!!!
!-->以上是关于新报: 根据IP获取物理地址不需要调用接口啦的主要内容,如果未能解决你的问题,请参考以下文章
java根据ip地址获取相应的所在地,精确到街道和门牌号,要怎么实现?