美文网首页
Java 查询手机号归属地 基于淘宝Api,百度Api

Java 查询手机号归属地 基于淘宝Api,百度Api

作者: 橘子软件 | 来源:发表于2020-07-27 15:56 被阅读0次

    代码基于hutool工具包 和 lombok制作

    主要代码是用hutool提供http工具类和json工具类进行完成

    <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>5.3.9</version>
    </dependency>
    
    import lombok.Getter;
    import lombok.Setter;
    
    @Setter
    @Getter
    public class PhoneEntity {
    
        private String province;
    
        private String city;
    
        // 如 中国联通...
        private String type;
    
    }
    
    import cn.hutool.core.exceptions.ExceptionUtil;
    import cn.hutool.core.util.StrUtil;
    import cn.hutool.http.HttpRequest;
    import cn.hutool.http.HttpResponse;
    import cn.hutool.http.HttpStatus;
    import cn.hutool.json.JSONArray;
    import cn.hutool.json.JSONObject;
    import cn.hutool.json.JSONUtil;
    import com.szxcharge.cloud.user.common.entity.PhoneEntity;
    import lombok.extern.slf4j.Slf4j;
    
    /**
     * 手机号查询省份 运营商信息
     * @author orange
     * @email 1067357662@qq.com
     */
    @Slf4j
    public class PhoneQueryUtil {
    
        /**
         * 查询手机号信息
         * @return null=信息查询不到
         */
        public static PhoneEntity query(String phoneNumber) {
            PhoneEntity phoneEntity = queryByBaiduApi(phoneNumber);
            if (null == phoneEntity) {
                phoneEntity = queryByTaobaoApi(phoneNumber);
            }
            return phoneEntity;
        }
    
        /**
         * 通过淘宝接口查询手机号信息
         */
        private static PhoneEntity queryByTaobaoApi(String phoneNumber) {
            try {
                String url = "https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=" + phoneNumber;
                HttpResponse response = HttpRequest.get(url).execute();
                if (response.getStatus() != HttpStatus.HTTP_OK) return null;
    
                String body = response.body().replace("__GetZoneResult_ = ", "");
                if (StrUtil.isBlank(body)) return null;
    
                JSONObject parseObj = JSONUtil.parseObj(body);
                String province = parseObj.getStr("province");
                String type = parseObj.getStr("catName");
    
                if (StrUtil.isBlank(province) || StrUtil.isBlank(type)) return null;
    
                PhoneEntity phoneEntity = new PhoneEntity();
                phoneEntity.setProvince(province);
                phoneEntity.setType(type);
    
                return phoneEntity;
            } catch (Exception e) {
                log.error("手机号查询信息出错: {}", ExceptionUtil.stacktraceToString(e));
                return null;
            }
        }
    
        /**
         * 通过百度接口查询手机号信息
         */
        private static PhoneEntity queryByBaiduApi(String phoneNumber) {
            try {
                String url = "https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?resource_name=guishudi&query=" + phoneNumber;
                HttpResponse response = HttpRequest.get(url).execute();
                if (response.getStatus() != HttpStatus.HTTP_OK) return null;
    
                String body = response.body();
                if (StrUtil.isBlank(body)) return null;
    
                JSONObject parseObj = JSONUtil.parseObj(body);
                JSONArray parseObjJSONArray = parseObj.getJSONArray("data");
                if (null == parseObjJSONArray || parseObjJSONArray.size() == 0) return null;
    
                JSONObject dataObject = parseObjJSONArray.getJSONObject(0);
    
                String province = dataObject.getStr("prov");
                String type = dataObject.getStr("type");
                String city = dataObject.getStr("city");
    
                if (StrUtil.isBlank(province) || StrUtil.isBlank(type)) return null;
    
                PhoneEntity phoneEntity = new PhoneEntity();
                phoneEntity.setProvince(province);
                phoneEntity.setType(type);
                phoneEntity.setCity(city);
    
                return phoneEntity;
            } catch (Exception e) {
                log.error("手机号查询信息出错: {}", ExceptionUtil.stacktraceToString(e));
                return null;
            }
        }
    
        public static void main(String[] args) {
            PhoneEntity phoneEntity = PhoneQueryUtil.query("xxxxxxxxx");
            if (null != phoneEntity) {
                System.out.println(phoneEntity.getProvince());
                System.out.println(phoneEntity.getType());
                System.out.println(phoneEntity.getCity());
            }
        }
    
    }
    

    相关文章

      网友评论

          本文标题:Java 查询手机号归属地 基于淘宝Api,百度Api

          本文链接:https://www.haomeiwen.com/subject/waizlktx.html