`
iaiai
  • 浏览: 2179699 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java手机号归属地查询

    博客分类:
  • J2EE
 
阅读更多
所需的包:carrier-1.75.jargeocoder-2.85.jarlibphonenumber-8.8.8.jarprefixmapper-2.85.jar

对象:
public class PhoneModel {
 
	/** 省份名称 */
	private String provinceName;
 
	/** 城市名称 */
	private String cityName;
 
	/** 运营商:移动/电信/联通 */
	private String carrier;
 
	/**
	 * 省份名称
	 * 
	 * @return 获取provinceName属性值
	 */
	public String getProvinceName() {
		return provinceName;
	}
 
	/**
	 * 省份名称
	 * 
	 * @param provinceName
	 *            设置 provinceName 属性值为参数值 provinceName
	 */
	public void setProvinceName(String provinceName) {
		this.provinceName = provinceName;
	}
 
	/**
	 * 城市名称
	 * 
	 * @return 获取cityName属性值
	 */
	public String getCityName() {
		return cityName;
	}
 
	/**
	 * 城市名称
	 * 
	 * @param cityName
	 *            设置 cityName 属性值为参数值 cityName
	 */
	public void setCityName(String cityName) {
		this.cityName = cityName;
	}
 
	/**
	 * 运营商:移动/电信/联通
	 * 
	 * @return 获取carrier属性值
	 */
	public String getCarrier() {
		return carrier;
	}
 
	/**
	 * 运营商:移动/电信/联通
	 * 
	 * @param carrier
	 *            设置 carrier 属性值为参数值 carrier
	 */
	public void setCarrier(String carrier) {
		this.carrier = carrier;
	}
 
}

代码实现和测试:
import java.util.Locale;
 
import com.csg.statistics.bean.PhoneModel;
import com.google.i18n.phonenumbers.PhoneNumberToCarrierMapper;
import com.google.i18n.phonenumbers.PhoneNumberUtil;
import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber;
import com.google.i18n.phonenumbers.geocoding.PhoneNumberOfflineGeocoder;
 
/**
 * 手机号归属地查询
 * jar依赖:com.googlecode.libphonenumber(Libphonenumber、Geocoder、Prefixmapper
 * 、Carrier) pom依赖:http://mvnrepository.com/search?q=libphonenumber
 * 项目地址:https://github.com/googlei18n/libphonenumber
 *
 */
public class PhoneUtil {
 
	/** 直辖市 */
	private final static String[] MUNICIPALITY = { "北京市", "天津市", "上海市", "重庆市" };
 
	/** 自治区 */
	private final static String[] AUTONOMOUS_REGION = { "新疆", "内蒙古", "西藏",
			"宁夏", "广西" };
 
	private static PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil
			.getInstance();
 
	/** 提供与电话号码相关的运营商信息 */
	private static PhoneNumberToCarrierMapper carrierMapper = PhoneNumberToCarrierMapper
			.getInstance();
 
	/** 提供与电话号码有关的地理信息 */
	private static PhoneNumberOfflineGeocoder geocoder = PhoneNumberOfflineGeocoder
			.getInstance();
 
	/** 中国大陆区区号 */
	private final static int COUNTRY_CODE = 86;
 
	/**
	 * 根据手机号 判断手机号是否有效
	 * 
	 * @param phoneNumber
	 *            手机号码
	 * @return true-有效 false-无效
	 */
	public static boolean checkPhoneNumber(String phoneNumber) {
		long phone = Long.parseLong(phoneNumber);
 
		PhoneNumber pn = new PhoneNumber();
		pn.setCountryCode(COUNTRY_CODE);
		pn.setNationalNumber(phone);
 
		return phoneNumberUtil.isValidNumber(pn);
 
	}
 
	/**
	 * 根据手机号 判断手机运营商
	 * 
	 * @param phoneNumber
	 *            手机号码
	 * @return 如:广东省广州市移动
	 */
	public static String getCarrier(String phoneNumber) {
 
		long phone = Long.parseLong(phoneNumber);
 
		PhoneNumber pn = new PhoneNumber();
		pn.setCountryCode(COUNTRY_CODE);
		pn.setNationalNumber(phone);
		// 返回结果只有英文,自己转成成中文
		String carrierEn = carrierMapper.getNameForNumber(pn, Locale.ENGLISH);
		String carrierZh = "";
		switch (carrierEn) {
		case "China Mobile":
			carrierZh += "移动";
			break;
		case "China Unicom":
			carrierZh += "联通";
			break;
		case "China Telecom":
			carrierZh += "电信";
			break;
		default:
			break;
		}
		return carrierZh;
	}
 
	/**
	 * 根据手机号 获取手机归属地
	 * 
	 * @param phoneNumber
	 *            手机号码
	 * @return 如:广东省广州市
	 */
	public static String getGeo(String phoneNumber) {
		long phone = Long.parseLong(phoneNumber);
 
		PhoneNumber pn = new PhoneNumber();
		pn.setCountryCode(COUNTRY_CODE);
		pn.setNationalNumber(phone);
		return geocoder.getDescriptionForNumber(pn, Locale.CHINESE);
	}
 
	/**
	 * 根据手机号 获取手机信息模型
	 * 
	 * <pre>
	 * 若返回值为null,则说明该号码无效
	 * </pre>
	 * 
	 * @param phoneNumber
	 *            手机号码
	 * @return 手机信息模型PhoneModel
	 */
	public static PhoneModel getPhoneModel(String phoneNumber) {
		if (checkPhoneNumber(phoneNumber)) {
			String geo = getGeo(phoneNumber);
			PhoneModel phoneModel = new PhoneModel();
			String carrier = getCarrier(phoneNumber);
			phoneModel.setCarrier(carrier);
			// 直辖市
			for (String val : MUNICIPALITY) {
				if (geo.equals(val)) {
					phoneModel.setProvinceName(val.replace("市", ""));
					phoneModel.setCityName(val);
					return phoneModel;
				}
			}
			// 自治区
			for (String val : AUTONOMOUS_REGION) {
				if (geo.startsWith(val)) {
					phoneModel.setProvinceName(val);
					phoneModel.setCityName(geo.replace(val, ""));
					return phoneModel;
				}
			}
 
			// 其它
			String[] splitArr = geo.split("省");
			if (splitArr != null && splitArr.length == 2) {
				phoneModel.setProvinceName(splitArr[0]);
				phoneModel.setCityName(splitArr[1]);
				return phoneModel;
			}
		}
		return null;
	}
	
	public static void main(String[] args) {
		PhoneModel phoneModel = PhoneUtil.getPhoneModel("13456555555");
		if(phoneModel != null){
			System.out.println(phoneModel.getProvinceName());
			System.out.println(phoneModel.getCityName());
			System.out.println(phoneModel.getCarrier());
		}else{
			System.err.println("该号码无效");
		}
	}
 
}

测试结果:
  • 大小: 32.5 KB
分享到:
评论

相关推荐

    java 手机号码归属地查询代码

    可以通过在项目中添加此 form的代码,查询号码归属地

    手机号码归属地查询JAVA项目

    《JAVA实现手机号码归属地查询项目详解》 手机号码归属地查询是信息技术领域常见的功能,尤其是在移动通信服务、市场营销和数据分析等行业中。本项目利用JAVA编程语言,旨在为用户提供便捷的手机号码归属地查询服务...

    java实现手机归属地查询

    本项目以Java编程语言为核心,实现了对手机号码归属地的查询功能。以下是对这一技术的详细阐述: 首先,我们要理解手机归属地查询的基本原理。通常,手机运营商会为每个手机号分配一个特定的区号和网络代码,这些...

    手机号码归属地查询

    在IT行业中,手机号码归属地查询是一项常见的服务,它能够帮助用户了解特定手机号码的注册地或运营商信息。这项服务通常基于Web Service技术实现,它允许不同系统间通过网络进行数据交互。以下是对这一主题的详细...

    java手机号归属地查询所需的包

    java手机号归属地查询所需的包,具体maven依赖地址http://mvnrepository.com/

    手机号归属地查询JAVA工具类

    在IT行业中,手机号归属地查询是一项常见的需求,尤其在安全验证、数据分析等领域。这个"手机号归属地查询JAVA...通过这个工具,开发者不仅可以快速实现手机号码归属地查询功能,还可以深入了解相关技术的实现细节。

    java 调用 360 api 接口实现批量查询手机号码归属地

    3. **处理请求参数**:将手机号码归属地查询的请求参数,如手机号码,封装到请求体或者URL中。如果使用POST请求,数据通常会被放在请求体里;如果是GET请求,这些信息会添加到URL的查询字符串中。 4. **签名与加密*...

    手机号码归属地查询程序

    机号码归属地查询程序,实现输入手机号码后,先从数据库中查询信息,若数据库中没有该号码信息,程序进入相应的查询阶段,查询手机号码的归属地(运营商,手机归属地),并且将信息存入到数据库中,并且更新数据库。...

    手机号码归属地查询软件

    手机号码归属地查询软件是一种常见的实用工具,它能够帮助用户获取特定手机号码的所属地信息。这类软件在日常生活中有着广泛的应用,例如帮助用户识别未知来电、防止骚扰电话或者进行市场营销数据分析。开源性质的...

    Android手机号码归属地查询

    《Android手机号码归属地查询与ksoap2解析技术详解》 在移动通信领域,了解一个手机号码的归属地是常见的需求,尤其对于开发者而言,构建一个Android应用来实现这一功能可以提供用户友好的服务。本篇文章将深入探讨...

    2022最新手机号段归属地查询 mysql 47万条数据

    总结来说,这个项目涉及了数据库设计、SQL脚本编写、Java数据库编程以及数据管理等多个IT领域的知识,对于理解和处理手机号码归属地查询有实际的应用价值。通过这样的实践,开发者可以提升数据处理和信息服务的能力...

    本地的手机号码归属地查询-oracle数据

    在IT行业中,手机号码归属地查询是一项常见的服务,它能够帮助用户识别来电号码的来源,以便于辨别骚扰电话或是确认重要联系人的地理位置。本项目主要涉及的是利用编程技术和数据库技术来实现这一功能,具体使用了...

    JAVA版手机号码归属地查询

    Java/S40 适用机型:诺基亚 7610S; 7510a; 7310c; 7070; 6103; 5000; 3120c; 2680s; 2600c; 1680c; 5220xm; 3600s; 7360; 7380; 6070; 8800 SE; 5300; 6088; 8800 Sirocco; 6086; 8600 Luna; 3500c; 7900; 6131i; ...

    百度API手机号码归属地查询demo

    本示例是关于“百度API手机号码归属地查询demo”,它提供了一个功能,即通过百度的API获取中国手机号码的归属地信息。这个功能在很多应用场景下都非常有用,比如数据分析、市场营销或者客户服务等,可以帮助企业了解...

    android 手机号码归属地查询

    在Android平台上实现手机号码归属地查询,涉及到的关键技术主要包括数据库操作、网络请求和数据解析。以下将详细阐述这些知识点。 1. **Android数据库操作**: Android系统支持SQLite数据库,这是轻量级的关系型...

    三大运营商手机号码归属地查询jar

    标题中的“三大运营商手机号码归属地查询jar”指的是一个Java应用程序,它允许用户查询中国移动、中国联通和中国电信这三大中国运营商的手机号码归属地信息。这个程序可能是为了帮助个人或企业了解电话号码的来源,...

    手机号码归属地数据库

    手机号码归属地数据库是一种用于查询和分析手机号码所属地信息的数据库系统,它包含了大量手机号码与它们对应的城市、区县、运营商等详细信息。在IT行业中,这种数据库通常被用于电话营销、客户服务、欺诈检测等多种...

    Java根据手机号获取归属地

    填入手机号码,获取手机号码归属地

    手机号码归属地查询系统

    【手机号码归属地查询系统】是一款基于Java Web技术开发的应用,主要用于帮助用户查询手机号码的归属地信息。在信息技术日益发达的今天,这样的系统对于个人和企业来说具有很高的实用价值,能够快速定位电话号码的...

Global site tag (gtag.js) - Google Analytics