`

java获取手机号归属地

 
阅读更多
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
 
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
 
public class MobileLocationUtil {
    /**
     * 归属地查询
     * @param mobile
     * @return mobileAddress
     */
    @SuppressWarnings("unused")
    private static String getLocationByMobile(final String mobile) throws ParserConfigurationException, SAXException, IOException{ 
        String MOBILEURL = " http://www.youdao.com/smartresult-xml/search.s?type=mobile&q="; 
        String result = callUrlByGet(MOBILEURL + mobile, "GBK");
        StringReader stringReader = new StringReader(result); 
        InputSource inputSource = new InputSource(stringReader); 
        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); 
        DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); 
        Document document = documentBuilder.parse(inputSource);
 
        if (!(document.getElementsByTagName("location").item(0) == null)) {
            return document.getElementsByTagName("location").item(0).getFirstChild().getNodeValue();
        }else{
            return "无此号记录!";
        }
    }
    /**
     * 获取URL返回的字符串
     * @param callurl
     * @param charset
     * @return
     */
    private static String callUrlByGet(String callurl,String charset){   
        String result = "";   
        try {   
            URL url = new URL(callurl);   
            URLConnection connection = url.openConnection();   
            connection.connect();   
            BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),charset));   
            String line;   
            while((line = reader.readLine())!= null){    
                result += line;   
                result += "\n";
            }
        } catch (Exception e) {   
            e.printStackTrace();   
            return "";
        }
        return result;
    }
    /**
     * 手机号码归属地
     * @param tel  手机号码
     * @return 135XXXXXXXX,联通/移动/电信,湖北武汉
     * @throws Exception
     * @author 
     */
    public static String getMobileLocation(String tel) throws Exception{
        Pattern pattern = Pattern.compile("1\\d{10}");
        Matcher matcher = pattern.matcher(tel);
        if(matcher.matches()){
            String url = "http://life.tenpay.com/cgi-bin/mobile/MobileQueryAttribution.cgi?chgmobile=" + tel;
            String result = callUrlByGet(url,"GBK");
            StringReader stringReader = new StringReader(result); 
            InputSource inputSource = new InputSource(stringReader); 
            DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); 
            DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); 
            Document document = documentBuilder.parse(inputSource);
            String retmsg = document.getElementsByTagName("retmsg").item(0).getFirstChild().getNodeValue();
            if(retmsg.equals("OK")){
                String supplier = document.getElementsByTagName("supplier").item(0).getFirstChild().getNodeValue().trim();
                String province = document.getElementsByTagName("province").item(0).getFirstChild().getNodeValue().trim();
                String city = document.getElementsByTagName("city").item(0).getFirstChild().getNodeValue().trim();
                if (province.equals("-") || city.equals("-")) {

//                    return (tel + "," + supplier + ","+ getLocationByMobile(tel));
                    return (getLocationByMobile(tel) + "," + supplier);
                }else {

//                    return (tel + "," + supplier + ","+ province + city);
                    return (province + city + "," + supplier );
                }

            }else {

                return "无此号记录!";

            }

        }else{

            return tel+ ":手机号码格式错误!";

        }

    }
    
    
    public static void main(String[] args) {
        try {
            System.out.println(MobileLocationUtil.getMobileLocation("187****254"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

 

分享到:
评论

相关推荐

    Java获取手机号码归属地的实现

    Java获取手机号码归属地的实现 Java获取手机号码归属地的实现是指通过Java语言获取手机号码的归属地信息,包括手机号码的国家代码、地区代码、运营商信息等。这种实现对发送短信、电话营销、客户关系管理等业务具有...

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

    总的来说,通过Java调用360 API查询手机号码归属地,涉及到网络编程、HTTP请求、API调用、JSON解析等多个技术环节。在实际开发中,需要仔细阅读和理解API文档,确保正确无误地完成这些步骤。同时,为了提高性能和...

    Java根据手机号获取归属地

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

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

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

    java实现手机归属地查询

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

    Android获取手机号码归属地

    在Android平台上,获取手机号码归属地是一项常见的需求,特别是在开发涉及通信或用户验证的应用时。本文将详细讲解如何实现这一功能。 首先,我们要明白手机号码的归属地信息通常包括运营商(如中国移动、中国联通...

    手机号码归属地查询

    7. **实时性**:手机号码归属地可能会因用户迁移或运营商调整而发生变化,因此查询服务需要能够获取最新的数据。这可能需要Web Service提供者定期更新数据库或者实时同步数据。 8. **API调用限制**:为了防止滥用,...

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

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

    手机号码归属地数据库

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

    手机号码归属地数据 424210条2019.2.15

    手机号码归属地采集工具的设计和实现涉及到编程语言(如Python、Java)、网络请求库、数据解析和存储等技术。开发者需要理解HTTP协议,能够处理反爬机制,同时要合理组织数据结构,以便后续的数据分析和处理。 总的...

    用Java解析手机号获取手机信息(归属地、Sim卡类型、移动或是联通、区号、邮编)

    有些网站和第三方服务提供了手机号码归属地查询的功能,他们通常维护着一份实时更新的数据库。在Java中,可以将这些数据存储在数据库(如MySQL、MongoDB)或文件(如CSV、JSON)中,然后通过读取和解析来获取所需...

    手机号码归属地查询软件

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

    手机号码归属地——到城市

    在IT行业中,手机号码归属地查询是一项常见的服务,它能够帮助用户识别来电号码的来源,通常用于来电显示软件的开发。这项技术涉及到数据库管理和数据处理等多个领域的知识。 首先,我们来了解一下“手机号码归属地...

    最新全国手机号码归属地数据库(每月更新一次)

    全国手机号码归属地数据库是一个非常实用的资源,尤其对于那些从事电信分析、市场营销或客户服务的IT专业人士来说。这个数据库每月更新一次,确保了数据的新鲜度和准确性,这对于跟踪和理解用户行为至关重要。 首先...

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

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

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

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

    手机号码归属地最新数据库

    手机号码归属地数据库是IT行业中一个重要的数据资源,主要用于提供手机号码所属的地理位置信息。这个数据库包含15万3千多条记录,涵盖了最新的151、155、157这三种号码段,这些都是由中国电信运营的189号段的子号段...

    最新手机号码归属地数据库423766条(EXCEl使用方法)

    手机号码归属地数据库的TXT版本可能以特定的分隔符(如逗号、制表符)将数据字段分开,用户可以通过编程语言(如Python、Java)或文本编辑器读取和解析这些数据。 3. **SQL数据集**:SQL是结构化查询语言,用于管理...

    Android手机号码归属地查询

    本篇文章将深入探讨如何利用ksoap2这个库在Android平台上进行网络请求,获取并解析手机号码归属地的信息。 ksoap2是一个轻量级的开源库,专为Android平台设计,用于处理SOAP(Simple Object Access Protocol)协议...

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

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

Global site tag (gtag.js) - Google Analytics