易源API 查询电话号码 归属地信息
第一步:获取appid 和 密钥
使用前提:注册成为会员
登录下面网址--点击 接口使用者--我的应用--获取appid 和 密钥
https://www.showapi.com/apiGateway/view?apiCode=6
第二步:导入依赖包
<dependency>
<groupId>com.showapi.javasdk</groupId>
<artifactId>com.showapi.javasdk</artifactId>
<version>0.0.1</version>
</dependency>
第三步:调用接口,获取电话号码信息
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 获取电话号码信息的工具
*/
public class CellphoneUtil {
private static final String APPID = "146218";//appid
private static final String SHOWAPI_SIGN = "12af3324de534f7b";//密钥为上面获取的密钥,此处仅为展示密钥
/**
* 获取电话号码信息的工具
* num:电话号码
* showapi_appid:appid
* showapi_timestamp:当前时间 格式:yyyyMMddHHmmss
* showapi_sign:密钥
*/
public static String getCellphoneInfo(String cellphone) throws IOException {
String format1 = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
URL u = new URL("https://route.showapi.com/6-1?num="+cellphone+"&showapi_appid="+APPID+"&showapi_timestamp="+format1+"&showapi_sign="+SHOWAPI_SIGN);
InputStream in = u.openStream();
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
byte buf[] = new byte[1024];
int read = 0;
while ((read = in .read(buf)) > 0) {
out.write(buf, 0, read);
}
} finally {
if ( in != null) {
in .close();
}
}
byte b[] = out.toByteArray();
return new String(b, "utf-8");
}
}
第四步:测试
导入huttool的包,便于解析json数据
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.1.3</version>
</dependency>
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
public static void main(String[] args) throws IOException {
String cellphoneInfo = getCellphoneInfo("17313115223");
System.out.println(cellphoneInfo);
JSONObject jo = JSONUtil.parseObj(cellphoneInfo);
System.out.println(jo);
JSONObject jo1 = jo.getJSONObject("showapi_res_body");
System.out.println(jo1);
String prov1 = jo1.getStr("prov");
System.out.println("省==" + prov1);
String city = jo1.getStr("city");
System.out.println("市==" + city);
String name = jo1.getStr("name");
System.out.println("运营商==" + name);
String type = jo1.getStr("type");
System.out.println("运营商类型==" + type);//1为移动 2为电信 3为联通 -1为未知
}
结果如下:
{
"showapi_res_error": "",
"showapi_res_id": "ebf6ba3a91df4f81bc7bb238a78c8417",
"showapi_res_code": 0,
"showapi_res_body": {"remark":"","name":"电信173卡","ret_code":0,"postCode":"610000","prov":"四川","num":1731311,"cityCode":"510100","city":"成都市","provCode":"510000","areaCode":"028","type":2}
}
{"showapi_res_error":"","showapi_res_id":"ebf6ba3a91df4f81bc7bb238a78c8417","showapi_res_body":{"areaCode":"028","provCode":"510000","city":"成都市","cityCode":"510100","num":1731311,"name":"电信173卡","remark":"","postCode":"610000","type":2,"ret_code":0,"prov":"四川"},"showapi_res_code":0}
{"areaCode":"028","provCode":"510000","city":"成都市","cityCode":"510100","num":1731311,"name":"电信173卡","remark":"","postCode":"610000","type":2,"ret_code":0,"prov":"四川"}
省==四川
市==成都市
运营商==电信173卡
运营商类型2
注意事项:
1.可以将上面抽取成工具,其他地方方便调取。
2.普通会员 每天只能调用100次,获取更多次数,需升级会员(这个有点坑,公司有钱随意)
3.还有其他公司也可以解析手机信息,如百度,但是没有找到,所以用易源做了个demo.