利用聚合接口实现Java查询身份证
来源:互联网 发布:mac上翻译软件 编辑:程序博客网 时间:2024/06/06 11:05
大家应该都有在网上查询身份证的经历,那么它是如何实现的呢?今天小狼就利用聚合数据网(https://www.juhe.cn/htto)所提供的API接口实现简单的身份证信息查询。
首先,在聚合数据网中找到身份证查询接口调用示例首页点击点击API找到免费数据 会发现有一个身份证查询,暂时是免费的点进去找到JAVA所对应的身份证查询示例代码即可直接将代码COPY下来即可
建一个JavaWEB项目![项目结构图](http://img.blog.csdn.net/20171122180522790?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3VkdWRlbGFuZzIy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
package com.bin.idCard;import java.io.BufferedReader;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;import java.util.HashMap;import java.util.Map;import net.sf.json.JSONObject;/***身份证查询调用示例代码 - 聚合数据*在线接口文档:http://www.juhe.cn/docs/38**/public class IdCardDemo { public static final String DEF_CHATSET = "UTF-8"; public static final int DEF_CONN_TIMEOUT = 30000; public static final int DEF_READ_TIMEOUT = 30000; public static String userAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36"; //配置您申请的KEY public static final String APPKEY ="***************************"; //1.身份证信息查询 public static Object getRequest1(String cardNo,String dtype){ String result =null; String url ="http://apis.juhe.cn/idcard/index";//请求接口地址 Map params = new HashMap();//请求参数 params.put("cardno", cardNo);//身份证号码 params.put("dtype", dtype);//返回数据格式:json或xml,默认json params.put("key", APPKEY);//你申请的key try { result =net(url, params, "GET"); JSONObject object = JSONObject.fromObject(result); if(object.getInt("error_code")==0){ System.out.println(object.get("result")); return object.get("result"); }else{ System.out.println(object.get("error_code")+":"+object.get("reason")); return object.get("error_code")+":"+object.get("reason"); } } catch (Exception e) { e.printStackTrace(); } return null; } //2.身份证泄漏查询 public static void getRequest2(){ String result =null; String url ="http://apis.juhe.cn/idcard/leak";//请求接口地址 Map params = new HashMap();//请求参数 params.put("cardno","");//身份证号码 params.put("dtype","");//返回数据格式:json或xml,默认json params.put("key",APPKEY);//你申请的key try { result =net(url, params, "GET"); JSONObject object = JSONObject.fromObject(result); if(object.getInt("error_code")==0){ System.out.println(object.get("result")); }else{ System.out.println(object.get("error_code")+":"+object.get("reason")); } } catch (Exception e) { e.printStackTrace(); } } //3.身份证挂失查询 public static void getRequest3(){ String result =null; String url ="http://apis.juhe.cn/idcard/loss";//请求接口地址 Map params = new HashMap();//请求参数 params.put("cardno","");//身份证号码 params.put("dtype","");//返回数据格式:json或xml,默认json params.put("key",APPKEY);//你申请的key try { result =net(url, params, "GET"); JSONObject object = JSONObject.fromObject(result); if(object.getInt("error_code")==0){ System.out.println(object.get("result")); }else{ System.out.println(object.get("error_code")+":"+object.get("reason")); } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { Object object = getRequest1("610500198801218294", "json"); System.out.println(object); } /** * * @param strUrl 请求地址 * @param params 请求参数 * @param method 请求方法 * @return 网络请求字符串 * @throws Exception */ public static String net(String strUrl, Map params,String method) throws Exception { HttpURLConnection conn = null; BufferedReader reader = null; String rs = null; try { StringBuffer sb = new StringBuffer(); if(method==null || method.equals("GET")){ strUrl = strUrl+"?"+urlencode(params); } URL url = new URL(strUrl); conn = (HttpURLConnection) url.openConnection(); if(method==null || method.equals("GET")){ conn.setRequestMethod("GET"); }else{ conn.setRequestMethod("POST"); conn.setDoOutput(true); } conn.setRequestProperty("User-agent", userAgent); conn.setUseCaches(false); conn.setConnectTimeout(DEF_CONN_TIMEOUT); conn.setReadTimeout(DEF_READ_TIMEOUT); conn.setInstanceFollowRedirects(false); conn.connect(); if (params!= null && method.equals("POST")) { try { DataOutputStream out = new DataOutputStream(conn.getOutputStream()); out.writeBytes(urlencode(params)); } catch (Exception e) { // TODO: handle exception } } InputStream is = conn.getInputStream(); reader = new BufferedReader(new InputStreamReader(is, DEF_CHATSET)); String strRead = null; while ((strRead = reader.readLine()) != null) { sb.append(strRead); } rs = sb.toString(); } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { reader.close(); } if (conn != null) { conn.disconnect(); } } return rs; } //将map型转为请求参数型 public static String urlencode(Map<String,Object>data) { StringBuilder sb = new StringBuilder(); for (Map.Entry i : data.entrySet()) { try { sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue()+"","UTF-8")).append("&"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } return sb.toString(); }}
这里的AppKey需要申请一下,这项功能暂时是免费的,以后很难说啊–
package com.bin.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.bin.idCard.IdCardDemo;public class IdCardServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub resp.setCharacterEncoding("utf-8"); //获取前台传入的身份证号 String cardNo = req.getParameter("cardNo"); Object obj = IdCardDemo.getRequest1(cardNo,"json"); System.out.println(obj.toString()); resp.getWriter().print(obj.toString()); }}
再从web.xml中配置一下servlet
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>idCard</display-name> <servlet> <servlet-name>IdCardServlet</servlet-name> <servlet-class>com.bin.servlet.IdCardServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>IdCardServlet</servlet-name> <url-pattern>/IdCardServlet</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list></web-app>
我们再写一个JSP页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Insert title here</title><script type="text/javascript" src="js/jquery-3.2.1.js"></script><script type="text/javascript"> $(function(){ $("#btn").click(function(){ $.ajax({ url:"IdCardServlet", data:{ cardNo:$("#cardNo").val() }, dataType:"json", success:function(data){ console.info(data); $("#area").html(data.area); $("#birthday").html(data.birthday); $("#sex").html(data.sex); } }); }); });</script></head><body> <h1>测试工具</h1> 身份证号码:<input id="cardNo" name="cardNo"/><input id="btn" type="button" value="查询"><br><br> 发证地:<span id="area"></span><br><br> 出生日期:<span id="birthday"></span><br><br> 性别:<span id="sex"></span><br><br></body></html>
Run as Server
效果如下:
struts2的jar包完全可以替代那6个jar包,需要jar包可以留言
阅读全文
0 0
- 利用聚合接口实现Java查询身份证
- 查询身份证信息的JAVA实现
- java实现身份证归属地查询
- 有道身份证查询接口API
- Android利用接口实现航班时刻查询
- JAVA 实现身份证验证
- java实现身份证验证
- MongoDB Spring实现(聚合查询)
- java调用聚合数据接口
- php电话归属地查询,聚合接口
- 实用接口:IP地址、手机归属和身份证查询接口
- java MongoDB 聚合查询aggregation
- ElasticSearch java API - 聚合查询
- Java 利用接口实现回调
- Java利用接口实现回调
- 利用JAVA Comparator接口实现数组排序
- 《利用Java框架实现Restful接口》
- java 利用接口实现工厂模式
- Eclipse Java注释模板设置详解
- Celery-4.1 用户指南: Signals
- 面试 jdk代理与cglib代理的区别
- SQL SERVER GETDATE()函数用法
- idea2017的hadoop的wordcount打成jar放到linux执行步骤
- 利用聚合接口实现Java查询身份证
- android studio报错:-source 1.7 中不支持 lambda 表达式(请使用 -source 8 或更高版本以启用 lambda 表达式)
- svn--6.图标
- 前端滚动延时加载图片
- vim配置及操作
- 高数 03.02洛必达法则
- Google Breakpad在windows下捕获程序崩溃报告
- 点在多边形内算法,JS判断一个点是否在一个复杂多边形的内部
- [App] Tomcat 优化