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 "未知";
    }
相关推荐
专注VB编程开发20年3 分钟前
vb.net datatable新增数据时改用数组缓存
java·linux·windows
程序员布吉岛3 分钟前
写了 10 年 MyBatis,一直以为“去 XML”=写注解,直到看到了这个项目
后端
却尘4 分钟前
一篇小白也能看懂的 Go 字符串拼接 & Builder & cap 全家桶
后端·go
茶杯梦轩4 分钟前
从零起步学习Redis || 第七章:Redis持久化方案的实现及底层原理解析(RDB快照与AOF日志)
redis·后端
QZQ541885 分钟前
重构即时IM项目13:优化消息通路(下)
后端
柠檬味拥抱5 分钟前
揭秘Cookie操纵:深入解析模拟登录与维持会话技巧
后端
(>_<)6 分钟前
java minio 分片上传工具类与测试demo
java·minio·分片上传
不想打工的码农7 分钟前
MyBatis-Plus多数据源实战:被DBA追着改配置后,我肝出这份避坑指南(附动态切换源码)
java·后端
ZeroTaboo9 分钟前
rmx:给 Windows 换一个能用的删除
前端·后端
Coder_Boy_22 分钟前
Deeplearning4j+ Spring Boot 电商用户复购预测案例
java·人工智能·spring boot·后端·spring