Java使用阿里云接口進(jìn)行身份證實(shí)名認(rèn)證的示例實(shí)現(xiàn)
如今隨著互聯(lián)網(wǎng)產(chǎn)業(yè)的多元化發(fā)展,尤其是互聯(lián)網(wǎng)金融,O2O,共享經(jīng)濟(jì)等新興商業(yè)形式的興起,企業(yè)對(duì)實(shí)名認(rèn)證業(yè)務(wù)的數(shù)據(jù)形式和數(shù)據(jù)質(zhì)量有了更高的需求。如今也衍生出身份證實(shí)名認(rèn)證業(yè)務(wù),通過(guò)接口將身份證號(hào)碼、姓名上傳至阿里云,再與全國(guó)公民身份信息系統(tǒng)進(jìn)行匹配,判斷信息的一致性。
在使用接口服務(wù)的方面我推薦使用技術(shù)實(shí)力強(qiáng)大的阿里云;
附上:阿里云最高¥2000云產(chǎn)品通用代金券
首先點(diǎn)擊:【阿里云API接口】獲取相應(yīng)的訂單后在控制臺(tái)中可以得到您的appcode;
發(fā)送數(shù)據(jù):
bodys.put('idNo', '340421190210182345');bodys.put('name', '張三');
返回?cái)?shù)據(jù):
{ 'name': '張三', 'idNo': '340421190710145412', 'respMessage': '身份證信息匹配', 'respCode': '0000', 'province': '安徽省', 'city': '淮南市', 'county': '鳳臺(tái)縣', 'birthday': '19071014', 'sex': 'M', 'age': '111'}
具體實(shí)現(xiàn)類(lèi):
public static void main(String[] args) { String host = 'https://idenauthen.market.alicloudapi.com'; String path = '/idenAuthentication'; String method = 'POST'; String appcode = '你自己的AppCode'; Map<String, String> headers = new HashMap<String, String>(); //最后在header中的格式(中間是英文空格)為Authorization:APPCODE 83359fd73fe94948385f570e3c139105 headers.put('Authorization', 'APPCODE ' + appcode); //根據(jù)API的要求,定義相對(duì)應(yīng)的Content-Type headers.put('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); Map<String, String> querys = new HashMap<String, String>(); Map<String, String> bodys = new HashMap<String, String>(); bodys.put('idNo', '340421190210182345'); bodys.put('name', '張三'); try { /** * 重要提示如下: * HttpUtils請(qǐng)從 * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/src/main/java/com/aliyun/api/gateway/demo/util/HttpUtils.java * 下載 * * 相應(yīng)的依賴請(qǐng)參照 * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/pom.xml */ HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys); System.out.println(response.toString()); //獲取response的body //System.out.println(EntityUtils.toString(response.getEntity())); } catch (Exception e) { e.printStackTrace(); } }
工具類(lèi)HttpUtils:
package com.netgate.util.send; import java.io.UnsupportedEncodingException;import java.net.URLEncoder;import java.security.KeyManagementException;import java.security.NoSuchAlgorithmException;import java.security.cert.X509Certificate;import java.util.ArrayList;import java.util.List;import java.util.Map; import javax.net.ssl.SSLContext;import javax.net.ssl.TrustManager;import javax.net.ssl.X509TrustManager; import org.apache.commons.lang.StringUtils;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpDelete;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.client.methods.HttpPut;import org.apache.http.conn.ClientConnectionManager;import org.apache.http.conn.scheme.Scheme;import org.apache.http.conn.scheme.SchemeRegistry;import org.apache.http.conn.ssl.SSLSocketFactory;import org.apache.http.entity.ByteArrayEntity;import org.apache.http.entity.StringEntity;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair; public class HttpUtils { /** * get * * @param host * @param path * @param method * @param headers * @param querys * @return * @throws Exception */ public static HttpResponse doGet(String host, String path, String method, Map<String, String> headers, Map<String, String> querys) throws Exception {HttpClient httpClient = wrapClient(host); HttpGet request = new HttpGet(buildUrl(host, path, querys)); for (Map.Entry<String, String> e : headers.entrySet()) { request.addHeader(e.getKey(), e.getValue()); }return httpClient.execute(request); } /** * post form * * @param host * @param path * @param method * @param headers * @param querys * @param bodys * @return * @throws Exception */ public static HttpResponse doPost(String host, String path, String method, Map<String, String> headers, Map<String, String> querys, Map<String, String> bodys) throws Exception {HttpClient httpClient = wrapClient(host); HttpPost request = new HttpPost(buildUrl(host, path, querys)); for (Map.Entry<String, String> e : headers.entrySet()) { request.addHeader(e.getKey(), e.getValue()); } if (bodys != null) { List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>(); for (String key : bodys.keySet()) {nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key))); } UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, 'utf-8'); formEntity.setContentType('application/x-www-form-urlencoded; charset=UTF-8'); request.setEntity(formEntity); } return httpClient.execute(request); } /** * Post String * * @param host * @param path * @param method * @param headers * @param querys * @param body * @return * @throws Exception */ public static HttpResponse doPost(String host, String path, String method, Map<String, String> headers, Map<String, String> querys, String body) throws Exception {HttpClient httpClient = wrapClient(host); HttpPost request = new HttpPost(buildUrl(host, path, querys)); for (Map.Entry<String, String> e : headers.entrySet()) { request.addHeader(e.getKey(), e.getValue()); } if (StringUtils.isNotBlank(body)) { request.setEntity(new StringEntity(body, 'utf-8')); } return httpClient.execute(request); } /** * Post stream * * @param host * @param path * @param method * @param headers * @param querys * @param body * @return * @throws Exception */ public static HttpResponse doPost(String host, String path, String method, Map<String, String> headers, Map<String, String> querys, byte[] body) throws Exception {HttpClient httpClient = wrapClient(host); HttpPost request = new HttpPost(buildUrl(host, path, querys)); for (Map.Entry<String, String> e : headers.entrySet()) { request.addHeader(e.getKey(), e.getValue()); } if (body != null) { request.setEntity(new ByteArrayEntity(body)); } return httpClient.execute(request); } /** * Put String * @param host * @param path * @param method * @param headers * @param querys * @param body * @return * @throws Exception */ public static HttpResponse doPut(String host, String path, String method, Map<String, String> headers, Map<String, String> querys, String body) throws Exception {HttpClient httpClient = wrapClient(host); HttpPut request = new HttpPut(buildUrl(host, path, querys)); for (Map.Entry<String, String> e : headers.entrySet()) { request.addHeader(e.getKey(), e.getValue()); } if (StringUtils.isNotBlank(body)) { request.setEntity(new StringEntity(body, 'utf-8')); } return httpClient.execute(request); } /** * Put stream * @param host * @param path * @param method * @param headers * @param querys * @param body * @return * @throws Exception */ public static HttpResponse doPut(String host, String path, String method, Map<String, String> headers, Map<String, String> querys, byte[] body) throws Exception {HttpClient httpClient = wrapClient(host); HttpPut request = new HttpPut(buildUrl(host, path, querys)); for (Map.Entry<String, String> e : headers.entrySet()) { request.addHeader(e.getKey(), e.getValue()); } if (body != null) { request.setEntity(new ByteArrayEntity(body)); } return httpClient.execute(request); } /** * Delete * * @param host * @param path * @param method * @param headers * @param querys * @return * @throws Exception */ public static HttpResponse doDelete(String host, String path, String method, Map<String, String> headers, Map<String, String> querys) throws Exception {HttpClient httpClient = wrapClient(host); HttpDelete request = new HttpDelete(buildUrl(host, path, querys)); for (Map.Entry<String, String> e : headers.entrySet()) { request.addHeader(e.getKey(), e.getValue()); }return httpClient.execute(request); } private static String buildUrl(String host, String path, Map<String, String> querys) throws UnsupportedEncodingException { StringBuilder sbUrl = new StringBuilder(); sbUrl.append(host); if (!StringUtils.isBlank(path)) { sbUrl.append(path); } if (null != querys) { StringBuilder sbQuery = new StringBuilder(); for (Map.Entry<String, String> query : querys.entrySet()) {if (0 < sbQuery.length()) { sbQuery.append('&');}if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) { sbQuery.append(query.getValue());}if (!StringUtils.isBlank(query.getKey())) { sbQuery.append(query.getKey()); if (!StringUtils.isBlank(query.getValue())) { sbQuery.append('='); sbQuery.append(URLEncoder.encode(query.getValue(), 'utf-8')); } } } if (0 < sbQuery.length()) {sbUrl.append('?').append(sbQuery); } }return sbUrl.toString(); } private static HttpClient wrapClient(String host) { HttpClient httpClient = new DefaultHttpClient(); if (host.startsWith('https://')) { sslClient(httpClient); }return httpClient; } private static void sslClient(HttpClient httpClient) { try { SSLContext ctx = SSLContext.getInstance('TLS'); X509TrustManager tm = new X509TrustManager() {public X509Certificate[] getAcceptedIssuers() { return null;}public void checkClientTrusted(X509Certificate[] xcs, String str) { }public void checkServerTrusted(X509Certificate[] xcs, String str) { } }; ctx.init(null, new TrustManager[] { tm }, null); SSLSocketFactory ssf = new SSLSocketFactory(ctx); ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); ClientConnectionManager ccm = httpClient.getConnectionManager(); SchemeRegistry registry = ccm.getSchemeRegistry(); registry.register(new Scheme('https', 443, ssf)); } catch (KeyManagementException ex) { throw new RuntimeException(ex); } catch (NoSuchAlgorithmException ex) { throw new RuntimeException(ex); } }}
到此這篇關(guān)于Java使用阿里云接口進(jìn)行身份證實(shí)名認(rèn)證的示例實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)阿里云身份證實(shí)名認(rèn)證內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. 每日六道java新手入門(mén)面試題,通往自由的道路第二天2. python b站視頻下載的五種版本3. 解決Java中的java.io.IOException: Broken pipe問(wèn)題4. 測(cè)試模式 - XSL教程 - 55. Python結(jié)合百度語(yǔ)音識(shí)別實(shí)現(xiàn)實(shí)時(shí)翻譯軟件的實(shí)現(xiàn)6. 《CSS3實(shí)戰(zhàn)》筆記--漸變?cè)O(shè)計(jì)(一)7. JAVA抽象類(lèi)及接口使用方法解析8. 讓chatgpt將html中的圖片轉(zhuǎn)為base64方法示例9. python如何寫(xiě)個(gè)俄羅斯方塊10. 教你JS更簡(jiǎn)單的獲取表單中數(shù)據(jù)(formdata)
