Java通过IP获取位置信息

Java通过IP获取位置信息

离线库

  • 不使用Api获取地址
使用方式:
  • 导入依赖
<dependency>
    <groupId>org.lionsoul</groupId>
    <artifactId>ip2region</artifactId>
    <version>2.6.4</version>
</dependency>
//把ip2region.xdb文件丢到resources路径下
String dbPath = "/ip2region/ip2region.xdb";
String path = Test.class.getResource(dbPath).getPath();
byte[] cBuff = Searcher.loadContentFromFile(path);
Searcher searcher = Searcher.newWithBuffer(cBuff);
String search = searcher.search("127.0.0.1");
String province = search.split("\\|")[2];
System.out.println("province = " + province);
System.out.println("search = " + search);

//控制台打印
province = 上海
search = 中国|0|上海|上海市|电信

GitHubJava版地址

踩过的坑

java.io.FileNotFoundExeption: …/app.jar!/BOOT-INF/classess!/ip2region/ip2region.xdb(No such file or directory)
容器部署的项目,打的是jar包,这个路径是不存在于磁盘上的,所以部署后读取不到该路径!!!!

解决方案:

//把ip2region.xdb文件丢到resources路径下
String dbPath = "/ip2region/ip2region.xdb";
//获取流
InputStream inputStream = Test.class.getResourceAsStream(dbPath);
File file = new File("your path");
//流写入文件
FileUtils.copyInputStreamToFile(inputStream,file);
RandomAccessFile randomAccessFile = new RandomAccessFile(file, "r");
byte[] cBuff = Searcher.loadContent(randomAccessFile);
Searcher searcher = Searcher.newWithBuffer(cBuff);
String search = searcher.search("127.0.0.1");
System.out.println("search = " + search);

//控制台打印
search = 中国|0|上海|上海市|电信

第三方地图软件Api

  • 高德
  • 百度地图
  • 腾讯地图
  • 等等

通过各大地图平台提供的Api接口

  • 特性:
  • 需要提前注册账号(公司项目账号捆绑于个人?)
  • Api有停用风险
  • 可能收费(自己去调研?)
  • 公司内网不能直接访问(开墙解决)
  • 等等
高德地图:
百度地图:
腾讯地图:
第一篇博客,感谢支持!!!
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值