根据身份证号获取相关信息(籍贯、性别、出生日期…)
首先我的只是个demo,身份证号也是写死的。仅供参考!
通过访问其他HTTP接口,将身份证号当作参数。调用接口返回相关信息
效果展示:
**接口地址及参数:**(idcard为身份证号,idcard和app_secret为掉接口必传值)
https://www.mxnzp.com/api/idcard/search?idcard=330326198903081211
&app_id=8cjgvbpphsnhqhtn&app_secret=QVZqNDkzcU52OHJjdmg1cXlqZ1FiQT09
**返回结果示例:**(实际返回是JSON字符串,需要处理一下)
{
"code": 1,
"msg": "数据返回成功!",
"data": {
"idCardNum": "330326198903081211",
"address": "浙江省温州市平阳县",
"birthday": "1989年03月08日",
"sex": "男"
}
}
代码展示:
前期准备(JSON字符串 转换为 JSON对象):
需要在pom.xml里加入依赖。
加入此依赖可以直接调用方法将JSON字符串转换为JSON对象
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.15</version>
</dependency>
doGet(String url, Map<String, String> param);这个方法就是调用接口,返回访问结果。
/**
* @author Java小白技术控
* date 2022/6/14 16:29
*/
public class IDCardUtil {
/**
* 只做通过身份证获取相关信息,没有做身份证的校验
* @param args
*/
public static void main(String[] args) {
//1.请求参数准备
Map<String,String> reqmMap = new HashMap<>();
reqmMap.put("idcard", "330326198903081211");//身份证号
reqmMap.put("app_id", "edu0qjlhqnfmueox");//调用此接口必传 ----- 不用动
reqmMap.put("app_secret", "dHAxQjFtTzlsbXZ1UUtOQkN4QmZTQT09");//调用此接口必传 ----- 不用动
String url = "https://www.mxnzp.com/api/idcard/search";//接口路径
String result = doGet(url, reqmMap);//调用接口,返回结果数据
//返回结果为Json字符串,需要处理。
JSONObject json = JSONObject.parseObject(result);
if(json == null){
System.out.println("访问失败!!!");
return;
}
Integer code = (Integer) json.get("code");
if(code == 1){//找到对应数据
JSONObject data = (JSONObject) json.get("data");
String sex = (String) data.get("sex");
String address = (String) data.get("address");
String birthday = (String) data.get("birthday");
System.out.println("address:"+address+"\n"+"birthday:"+birthday+"\n"+"sex:"+sex+"\n");
}else{//未找到对应数据
String msg = (String) json.get("msg");
System.out.println("访问失败:"+msg);
}
}
public static String doGet(String url, Map<String, String> param) {
// 创建Httpclient对象
CloseableHttpClient httpclient = HttpClients.createDefault();
String resultString = "";
CloseableHttpResponse response = null;
try {
// 创建uri
URIBuilder builder = new URIBuilder(url);
if (param != null) {
for (String key : param.keySet()) {
builder.addParameter(key, param.get(key));
}
}
URI uri = builder.build();
// 创建http GET请求
HttpGet httpGet = new HttpGet(uri);
// 执行请求
response = httpclient.execute(httpGet);
// 判断返回状态是否为200
if (response.getStatusLine().getStatusCode() == 200) {
resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
}else{
resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (response != null) {
response.close();
}
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return resultString;
}
}
最后展示一下效果(我只是在控制台输出一下):

版权声明:本文为ZPJ6969原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。