Java实现手机号码归属地查询

前言

接到一个需求,获取手机号码的归属地。这里记录一下,我们可以使用com.googlecode.libphonenumber的geocoder来获取手机号码归属地

1、添加依赖

java 复制代码
  		<!--根据手机号查询归属地 -->
        <dependency>
            <groupId>com.googlecode.libphonenumber</groupId>
            <artifactId>geocoder</artifactId>
            <version>2.205</version>
        </dependency>

2、查询归属地方法

java 复制代码
    public static final PhoneNumberOfflineGeocoder GEOCODER = PhoneNumberOfflineGeocoder.getInstance();

    public static final int COUNTRY_CODE = 86;

    /**
     * 查询手机号码归属地
     * @param phoneNum
     * @return
     */
    public static String getPhoneNumAttribution(String phoneNum) {
        if (StringUtils.isNotBlank(phoneNum) && phoneNum.length() == 11) {
            try {
                long phone = Long.parseLong(phoneNum);
                Phonenumber.PhoneNumber pn = new Phonenumber.PhoneNumber();
                pn.setCountryCode(COUNTRY_CODE);
                pn.setNationalNumber(phone);
                return GEOCODER.getDescriptionForNumber(pn, Locale.CHINESE);
            }catch (Exception e){
                log.error("查询手机号码归属地失败,手机号:{},异常:{}",phoneNum,e);
                return "未知";
            }

        }
        log.info("查询手机号码归属地失败,手机号:{},异常:{}",phoneNum);
        return "未知";
    }
相关推荐
zabr6 分钟前
花了 100+ 篇笔记,我整理出 了一套 AI Agent 工程完全指南
前端·后端·agent
jing-ya16 分钟前
day 59 图论part10
java·开发语言·数据结构·算法·图论
神奇小汤圆19 分钟前
Java面试题及答案整理(2026年金三银四最新版,持续更新)
后端
uzong22 分钟前
“腾讯QClaw全面开放”,不花 Token 钱、真正体验一把小龙虾的快乐,最低成本全面了解龙虾
人工智能·后端
楼田莉子23 分钟前
C++高并发内存池:内存池调优与测试
c++·后端·哈希算法·visual studio
短剑重铸之日27 分钟前
《ShardingSphere解读》16 改写引擎:如何理解装饰器模式下的 SQL 改写实现机制?
java·数据库·后端·sql·shardingsphere·分库分表·装饰器模式
q54314708732 分钟前
VScode 开发 Springboot 程序
java·spring boot·后端
小涛不学习41 分钟前
Java高频面试题(带答案版)
java·开发语言
big_rabbit050241 分钟前
JVM堆内存查看命令
java·linux·算法
学习要积极1 小时前
Springboot图片验证码-EasyCaptcha
java·spring boot·后端