调用手机在线API获取手机号码归属地信息

article/2025/9/24 11:32:13

手机在线(www.showji.com)始创于2001年,发展至今已拥有国内最准确、号段容量最大的手机号码归属地数据库系统,

目前号段容量将近33万条,每月保持两次以上规模数据更新,合作伙伴包括:百度、淘宝、腾讯、搜狗、小米手机、宝马汽车、

神马搜索、点心OS等。

手机在线号码归属地提供WebService、HTTP API、免费调用和付费数据库四种使用方式:

 

可以通过URL GET超链接的方式来获取手机号归属地信息,每IP每分钟调用20次的限制,具体实现如下:

import java.util.regex.Matcher;
import java.util.regex.Pattern;/**
* 通过手机号码,获得该号码的归属地、运营商等信息
*/
public class ShoujiHelper {public static final String SHOUJI_URL = "http://v.showji.com/Locating/showji.com2016234999234.aspx";public static final String REGEX_IS_MOBILE ="(?is)(^1[3|4|5|7|8][0-9]\\d{4,8}$)";// 正则表达式,可以只输入手机号码前7位/*** 根据手机号码获取归属地信息* @param mobileNumber* @throws Exception*/public static String getMobileFrom(String mobileNumber) throws Exception {if (!veriyMobile(mobileNumber)) {throw new Exception("不是完整的11位手机号或者正确的手机号前七位");}String URL = SHOUJI_URL+"?m="+mobileNumber+"&output=json&callback=querycallback&timestamp="+System.currentTimeMillis();String result = HttpUtil.readContentFromGet(URL);if( result != null ){result = StringUtils.substringBetween(result, "(", ")");}return result;}/***验证手机号格式 是否符合*@param mobileNumber*/ public static boolean veriyMobile(String mobileNumber) { Pattern p = Pattern.compile(REGEX_IS_MOBILE);Matcher m = p.matcher(mobileNumber);return m.matches(); }//测试一下public static void main(String[] args) throws Exception {long[] phones={18190282387L,18081685555L,18013715591L,18092163043L,18370631995L,18026799125L,18056538590L,18038692012L,18083766020L,18092015835L,18060923366L,18078158869L,18041153288L,18028690873L,18028796251L,13585859733L,15961230678L,18937295656L,18056649455L,15640694239L,18958283918L,18966551516L,15353951523L,18025114334L,15071469692L,15139914717L,13738618263L,13181207626L,13516035175L,15327038012L,18659138399L,15151920785L,18969515188L,13064025146L,15619969722L};int successNum = 0, dealNum = 20;for(int i=0; i < dealNum; i++){String result = getMobileFrom(phones[i]+"");System.out.println(result);if (result!=null && result.contains("True")) {successNum++;}}System.out.println("=========================");System.out.println("|    处理的号码总数=="+dealNum);System.out.println("|    获取成功的个数=="+successNum);System.out.println("|    获取失败的个数=="+(dealNum-successNum));System.out.println("=========================");}
}

 

通过GET_URL调用接口获取内容的工具类HttpUtil

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;import org.apache.commons.io.IOUtils;public class HttpUtil {/*** 通过GET_URL调用接口获取内容*/public static String readContentFromGet(String GET_URL) throws IOException {String result = null;BufferedReader reader = null;HttpURLConnection connection = null;try{String getURL =  GET_URL;URL getUrl = new URL(getURL);// 根据拼凑的URL,打开连接,URL.openConnection函数会根据URL的类型,connection = (HttpURLConnection) getUrl.openConnection();connection.setConnectTimeout(30000);connection.setReadTimeout(30000);connection.setRequestProperty("Accept-Charset", "UTF-8");connection.setRequestProperty("contentType", "UTF-8");connection.setRequestProperty("Content-Type", "text/xml; charset=utf-8");// 进行连接
            connection.connect();// 取得输入流,并使用Reader读取reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));String line = null;StringBuffer lines = new StringBuffer();while ((line = reader.readLine()) != null) {lines.append(line);}result = lines.toString();} catch (Exception e) {System.out.println("GET_URL Result Exception : "+e.getMessage());} finally {// 释放资源 断开连接
            IOUtils.closeQuietly(reader);connection.disconnect();connection = null;}return result;}
}

每IP每分钟调用20次输出结果:

{"Mobile":"18190282387","QueryResult":"True","TO":"中国电信","Corp":"中国电信","Province":"四川","City":"资阳","AreaCode":"0832","PostCode":"641300","VNO":"","Card":""}
{"Mobile":"18081685555","QueryResult":"True","TO":"中国电信","Corp":"中国电信","Province":"四川","City":"资阳","AreaCode":"0832","PostCode":"641300","VNO":"","Card":""}
{"Mobile":"18013715591","QueryResult":"True","TO":"中国电信","Corp":"中国电信","Province":"江苏","City":"苏州","AreaCode":"0512","PostCode":"215000","VNO":"","Card":""}
{"Mobile":"18092163043","QueryResult":"True","TO":"中国电信","Corp":"中国电信","Province":"陕西","City":"西安","AreaCode":"029","PostCode":"710000","VNO":"","Card":""}
{"Mobile":"18370631995","QueryResult":"True","TO":"中国移动","Corp":"中国移动","Province":"江西","City":"吉安","AreaCode":"0796","PostCode":"343000","VNO":"","Card":""}
{"Mobile":"18026799125","QueryResult":"True","TO":"中国电信","Corp":"中国电信","Province":"广东","City":"江门","AreaCode":"0750","PostCode":"529000","VNO":"","Card":""}
{"Mobile":"18056538590","QueryResult":"True","TO":"中国电信","Corp":"中国电信","Province":"安徽","City":"芜湖","AreaCode":"0553","PostCode":"241000","VNO":"","Card":""}
{"Mobile":"18038692012","QueryResult":"True","TO":"中国电信","Corp":"中国电信","Province":"广东","City":"佛山","AreaCode":"0757","PostCode":"528000","VNO":"","Card":""}
{"Mobile":"18083766020","QueryResult":"True","TO":"中国电信","Corp":"中国电信","Province":"江苏","City":"扬州","AreaCode":"0514","PostCode":"225000","VNO":"","Card":""}
{"Mobile":"18092015835","QueryResult":"True","TO":"中国电信","Corp":"中国电信","Province":"陕西","City":"西安","AreaCode":"029","PostCode":"710000","VNO":"","Card":""}
{"Mobile":"18060923366","QueryResult":"True","TO":"中国电信","Corp":"中国电信","Province":"福建","City":"厦门","AreaCode":"0592","PostCode":"361000","VNO":"","Card":""}
{"Mobile":"18078158869","QueryResult":"True","TO":"中国电信","Corp":"中国电信","Province":"广西","City":"南宁","AreaCode":"0771","PostCode":"530000","VNO":"","Card":""}
{"Mobile":"18041153288","QueryResult":"True","TO":"中国电信","Corp":"中国电信","Province":"辽宁","City":"大连","AreaCode":"0411","PostCode":"116000","VNO":"","Card":""}
{"Mobile":"18028690873","QueryResult":"True","TO":"中国电信","Corp":"中国电信","Province":"广东","City":"广州","AreaCode":"020","PostCode":"510000","VNO":"","Card":""}
{"Mobile":"18028796251","QueryResult":"True","TO":"中国电信","Corp":"中国电信","Province":"广东","City":"深圳","AreaCode":"0755","PostCode":"518000","VNO":"","Card":""}
{"Mobile":"13585859733","QueryResult":"True","TO":"中国移动","Corp":"中国移动","Province":"上海","City":"上海","AreaCode":"021","PostCode":"200000","VNO":"","Card":""}
{"Mobile":"15961230678","QueryResult":"True","TO":"中国移动","Corp":"中国移动","Province":"江苏","City":"常州","AreaCode":"0519","PostCode":"213000","VNO":"","Card":""}
{"Mobile":"18937295656","QueryResult":"True","TO":"中国电信","Corp":"中国电信","Province":"河南","City":"安阳","AreaCode":"0372","PostCode":"455000","VNO":"","Card":""}
{"Mobile":"18056649455","QueryResult":"True","TO":"中国电信","Corp":"中国电信","Province":"安徽","City":"池州","AreaCode":"0566","PostCode":"247100","VNO":"","Card":""}
{"Mobile":"15640694239","QueryResult":"True","TO":"中国联通","Corp":"中国联通","Province":"辽宁","City":"锦州","AreaCode":"0416","PostCode":"121000","VNO":"","Card":""}
=========================
|    处理的号码总数==20
|    获取成功的个数==20
|    获取失败的个数==0
=========================

 

转载于:https://www.cnblogs.com/yzuzhang/p/5863178.html


http://chatgpt.dhexx.cn/article/wKCy8XOL.shtml

相关文章

最新手机号码归属地数据库(2017年4月1日)

2017年4月1日版 近36万条记录 celldb.cc最新 号码归属地数据库 手机号段数据库 移动 联通 电信 移动号段 联通号段 电信号段 虚拟170号段 171号段号码字段包括 省市 运营商 邮编 区号 等信息 移动号码&#xff1a; 134 135 136 137 138 139 147 150 151 152 157 158 159 178 …

PHP——最新号码归属地数据库

前言 最近在忙的一个项目&#xff0c;为了数据安全&#xff0c;不能够使用任何第三方的接口~ 号码库 | https://github.com/wangyang0210/Phone-Number-Range 代码 其实就是一个很简单的封装方法&#xff0c;没什么好说的~ /*** 根据号码返回归属地* * param string $phone 手机…

APISpace 手机号码归属地和运营商查询API

APISpace 的 中国手机号码归属地和运营商查询API&#xff0c;为您提供最新的中国移动、中国电信、中国联通所有手机号码归属地等功能&#xff0c; 输入手机号码至少前7位&#xff0c;可查该手机号码归属地、所属号段、手机卡类型。 手机号码归属地有三大作用&#xff1a; 代表…

APISpace 手机号码归属地API

今天就和大家讲一讲 APISpace 的 手机号码归属地API&#xff0c;可根据手机号码查询其省市区、运营商区号行政区划代码等信息。 上亿条数据囊括最新的170、166、147等号段&#xff0c;更新及时、准确度高。 接口优势 准确性高&#xff1a; 动态数据库&#xff0c;囊括最新的1…

2023最新手机归属地数据库mysql,近49w条数据

最新手机号段归属地数据库 最新 手机号段数据库 号码归属地数据库 移动号段 联通号段 电信号段 广电号段 虚拟运营商 字段有 省份 城市 运营商 区号 邮编&#xff0c;对于数据分析、号码归属地查询等非常有帮助 各号段最新数据量 SELECT * FROM mobile WHERE phone1518888 查询…

mysql手机号段地区库_最新全国手机号段归属地数据库下载(mysql+xlsx+txt格式)46万条...

在做网站程序时,经常用到校验用户输入的手机号归属地或所属移动,电信,联通等服务商,本手机号码段归属地数据库包括支持可查省份 城市 运营商 邮编 区号。而且提供.mysql,excel,txt三种数据格式数据库,2020年11月份最新的包括46万条记录集,可方便为实现手机号码段归属地查…

手机号归属地数据库;根据手机号查找对应的归属地;

我在网上找到了一份手机号对应归属地的数据库文档。 链接: https://pan.baidu.com/s/1MQtDkw3sowNmdSeoVJUbEA 密码: tp1o 链接: https://pan.baidu.com/s/1pzh_FqXOP_6Ta103K5Cmyw 密码: 9j5r 如有需要&#xff0c;先点赞、关注&#xff0c;再下载。

最新手机号段归属地数据库 (2021年4月版) 473101行

最新手机号段归属地数据库(2021年4月发行版) 473101行基于&#xff1a;最新手机号段归属地数据库 名称&#xff1a;手机号码归属地查询 dat高效率查询 压缩&#xff1a;原版txt为25M,生成这种dat结构为2.86M 性能&#xff1a;每秒解析300w ,简洁高效 创建&#xff1a;qqzeng-i…

extern关键字

extern的使用详解&#xff08;多文件编程&#xff09;——C语言 extern——关键字 extern是C语言中的一个关键字&#xff0c;一般用在变量名前或函数名前&#xff0c;作用是用来说明“此变量/函数是在别处定义的&#xff0c;要在此处引用”&#xff0c;extern这个关键字大部分…

extern关键字用法详解

extern关键字会提升变量或者函数的逼格&#xff0c;使得它们可以跨文件被访问。话虽然是这么说&#xff0c;使用这个关键字必须要注意一些东西。 首先&#xff0c;你得在cpp文件里面实现这些全局变量和全局函数&#xff0c;这是最基本的&#xff0c;然后只需要在需要用到这些变…

extern 声明用法

变量声明向编译器保证变量以给定的类型和名称存在&#xff0c;这样编译器在不需要知道变量完整细节的情况下也能继续进一步的编译。变量声明只在编译时有它的意义&#xff0c;在程序连接时编译器需要实际的变量声明。 当您使用多个文件且只在其中一个文件中定义变量时&#xf…

extern C语言的用法

extern用作从其他.c文件调用变量&#xff08;一般是全局变量&#xff09;和调用其他.c文件的函数&#xff08;当然不能调用其他.c文件的main函数哈哈哈哈哈哈&#xff09; 比如从test.c文件要从test1.c文件调用test1.c文件的int te全局变量和test1.c文件的Print()函数&#xff…

【C语言】extern 关键字

&#x1f6a9;write in front&#x1f6a9; &#x1f50e;大家好&#xff0c;我是謓泽&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f3c5;2021年度博客之星物联网与嵌入式开发TOP5&#xff5…

extern和static的用法

一&#xff1a;static static有两种使用&#xff1a;一种是修饰变量&#xff0c;另一种是修饰函数 1.修饰变量&#xff1a;作用是使得该变量在出了其作用范围后不会被销毁 第一种是修饰局部变量&#xff1a; 普通的局部变量是存储在栈区的&#xff0c;但是通过static修饰之后…

extern用法

1.extern变量&#xff0c;extern函数 extern 最简单的用法就是在一个文件中引用另一个文件中的变量或者函数。 首先我们要知道一个概念&#xff1a;声明可以有多次&#xff0c;定义只能有一次。 1.1extern变量 先来谈谈extern变量。 ① int a; ② int a 0; ③ extern int a…

C语言学习之extern关键字

1.了解extern 1.extern是C语言的一个关键字&#xff0c;可以用来修饰函数与变量 2.当extern修饰一个变量或函数时时&#xff0c;就是在声明这个变量(函数)&#xff0c;告诉编译器在外部文件中已经这个变量(函数)&#xff0c;要通过编译。 2.extern的用法 1.在一个文件中引用其…

extern关键字的一般用法

extern关键字会提升变量或者函数的逼格&#xff0c;使得它们可以跨文件被访问。话虽然是这么说&#xff0c;使用这个关键字必须要注意一些东西。 首先&#xff0c;你得在cpp文件里面实现这些全局变量和全局函数&#xff0c;这是最基本的&#xff0c;然后只需要在需要用到这些变…

C++中的extern

文章目录 extern的含义修饰全局变量修饰全局常量修饰局部变量修饰字符串C代码C代码 想必大家都知道&#xff0c;在C中&#xff0c;想要生成一个可执行文件&#xff08;exe&#xff09;或者动态链接库&#xff08;dll&#xff09;&#xff0c;需要经过编译和链接两个步骤&#x…

extern使用方法总结!

一、问题 Extern的问题在于不知道这个关键词出现的时候到底是声明还是定义&#xff1f; 二、详解 1、函数的声明extern关键词是可有可无的&#xff0c;因为函数本身不加修饰的话就是extern。但是引用的时候一样需要声明的。 2、全局变量在外部使用声明时&#xff0c;extern关键…

extern详解

extern——关键字 extern是C语言中的一个关键字&#xff0c;一般用在变量名前或函数名前&#xff0c;作用是用来说明“此变量/函数是在别处定义的&#xff0c;要在此处引用”&#xff0c;extern这个关键字大部分读者应该是在变量的存储类型这一类的内容中 遇到的&#xff0c;…