使用阿里云身份证扫描识别接口案例—

简介: 使用阿里云身份证扫描识别接口案例—
/**
   * 
  * @Title: idcard
  * @Description: 该方法的主要作用:扫描身份证
  * @param  @return 设定文件  
  * @return  返回类型:String   
  * @throws
   */
  public void idcard(){
    String host = "https://dm-51.data.aliyun.com";
      String path = "/rest/160601/ocr/ocr_idcard.json";
      String method = "POST";
      Map<String, String> headers = new HashMap<String, String>();
      headers.put("Authorization", "APPCODE " + appcode);
      headers.put("Content-Type", "application/json; charset=UTF-8");
      Map<String, String> querys = new HashMap<String, String>();
      String bodys = "{\"inputs\": [{\"image\": {\"dataType\": 50,\"dataValue\":\""+img+"\"},\"configure\": {\"dataType\": 50,\"dataValue\":\"{\\\"side\\\":\\\"face\\\"}\"}}]}";
      try {
        
        HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);
        //System.out.println(EntityUtils.toString(response.getEntity()));
        String result = EntityUtils.toString(response.getEntity());
        System.out.println(result);
         JSONObject jObject =  JSONObject.fromObject(result);
         JSONArray jarray = jObject.optJSONArray("outputs");
         for (int i = 0; i < jarray.size(); i++) {
        JSONObject subject =  jarray.getJSONObject(i);
        String outputValue = subject.get("outputValue").toString();
        /*outputValue={
              "dataType": 50,
              "dataValue": {
                "address": "山西省xxxx041",
                "birth": "19980908",
                "config_str": "{\"side\":\"face\"}",
                "face_rect": {
                  "angle": -90,
                  "center": {
                    "x": 446,
                    "y": 210
                  },
                  "size": {
                    "height": 92,
                    "width": 84
                  }
                },
                "name": "xxx",
                "nationality": "汉",
                "num": "1411251998xxxxxxX",
                "request_id": "20170806200141_c5338b2c4fd601ea7f00c4dcc5c8ee0e",
                "sex": "男",
                "success": true
              }
            }*/
        JSONObject j_outputValue = JSONObject.fromObject(outputValue);
        String dataValue = j_outputValue.getString("dataValue");
        JSONObject j_dataValue = JSONObject.fromObject(dataValue);
        customerInfo = new CustomerInfo();
        customerInfo.setName(j_dataValue.getString("name").toString());  //姓名
        String date = j_dataValue.getString("birth").toString();
        customerInfo.setBorn(date);
        SimpleDateFormat format = new SimpleDateFormat(date);
        Date birth = format.parse(date);
        customerInfo.setBirth(birth);//生日
        
        customerInfo.setAddress(j_dataValue.getString("address").toString());
        customerInfo.setNationality(j_dataValue.getString("nationality").toString());
        customerInfo.setNum(j_dataValue.getString("num").toString());
        customerInfo.setSex(j_dataValue.getString("sex").toString());
        
      }
        System.out.println(customerInfo.getName());
        String jsonc = JSON.toJSONString(customerInfo);
        
      HttpServletResponse response1 = ServletActionContext.getResponse();
      response1.setContentType("text/html;charset=utf-8");
      PrintWriter out = response1.getWriter();
      out.print(jsonc);
      
      } catch (Exception e) {
        e.printStackTrace();
      }
    
  }


相关实践学习
基于Hologres轻量实时的高性能OLAP分析
本教程基于GitHub Archive公开数据集,通过DataWorks将GitHub中的项⽬、行为等20多种事件类型数据实时采集至Hologres进行分析,同时使用DataV内置模板,快速搭建实时可视化数据大屏,从开发者、项⽬、编程语⾔等多个维度了解GitHub实时数据变化情况。
阿里云实时数仓实战 - 用户行为数仓搭建
课程简介 1)学习搭建一个数据仓库的过程,理解数据在整个数仓架构的从采集、存储、计算、输出、展示的整个业务流程。 2)整个数仓体系完全搭建在阿里云架构上,理解并学会运用各个服务组件,了解各个组件之间如何配合联动。 3&nbsp;)前置知识要求:熟练掌握 SQL 语法熟悉 Linux 命令,对 Hadoop 大数据体系有一定的了解 &nbsp; 课程大纲 第一章&nbsp;了解数据仓库概念 初步了解数据仓库是干什么的 第二章&nbsp;按照企业开发的标准去搭建一个数据仓库 数据仓库的需求是什么 架构 怎么选型怎么购买服务器 第三章&nbsp;数据生成模块 用户形成数据的一个准备 按照企业的标准,准备了十一张用户行为表 方便使用 第四章&nbsp;采集模块的搭建 购买阿里云服务器 安装 JDK 安装 Flume 第五章&nbsp;用户行为数据仓库 严格按照企业的标准开发 第六章&nbsp;搭建业务数仓理论基础和对表的分类同步 第七章&nbsp;业务数仓的搭建&nbsp; 业务行为数仓效果图&nbsp;&nbsp;
相关文章
|
网络协议 安全 网络安全
【UDP】——为什么 UDP 数据包不能超过 512 个字节
一开始了解的是 DNS 服务使用的是 UDP 协议,后面看到 DNS 服务主要使用 UDP 协议,在少数情况(传输的数据超过 512 个字节)下也会使用 TCP 协议,因为 UDP 数据包不能超过 512 个字节。那问题来了,为什么 UDP 数据包不能超过 512 个字节呢?
5269 0
【UDP】——为什么 UDP 数据包不能超过 512 个字节
|
NoSQL 关系型数据库 MySQL
centos搭建python2.7开发环境
centos搭建python2.7开发环境
450 0
|
资源调度 JavaScript Windows
yarn install命令运行报错:无法将“yarn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。...
yarn install命令运行报错:无法将“yarn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。...
3874 1
yarn install命令运行报错:无法将“yarn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。...
|
8月前
|
存储 Oracle 关系型数据库
《理解MySQL数据库》从个人项目到全球最流行的开源数据库
MySQL自1994年诞生以来,历经初创、商业化、Sun与Oracle时代,持续演进。其成功源于开源策略、性能优化及丰富生态,现已成为Java开发中不可或缺的数据库,未来将向云原生、AI集成与自动化运维方向发展。
|
前端开发 JavaScript 算法
ACEeditor使用手册(三)
ACEeditor使用手册(三)
623 0
|
安全 Java API
【Java性能优化】Map.merge()方法:告别繁琐判空,3行代码搞定统计累加!
在日常开发中,我们经常需要对Map中的值进行累加统计。}else{代码冗长,重复调用get()方法需要显式处理null值非原子操作,多线程下不安全今天要介绍的方法,可以让你用一行代码优雅解决所有这些问题!方法的基本用法和优势与传统写法的对比分析多线程安全版本的实现Stream API的终极优化方案底层实现原理和性能优化建议一句话总结是Java 8为我们提供的Map操作利器,能让你的统计代码更简洁、更安全、更高效!// 合并两个列表});简单累加。
1130 0
|
前端开发 NoSQL Java
Sa-Token学习圣经:从入门到精通Sa-Token,成为 史上最全的权限设计专家
尼恩团队推出了一系列技术学习资料,帮助开发者提升技能,应对面试挑战。最近,有读者在面试一线互联网企业如得物、阿里、滴滴等时遇到了与SpringCloud工业级底座相关的面试题,特别是用户权限认证和单点登录的设计问题。为此,尼恩团队整理了《Sa-Token学习圣经》,从入门到精通,帮助大家系统化地掌握Sa-Token框架。
|
测试技术 C语言
分享一个好用的C语言.ini文件的解析库
分享一个好用的C语言.ini文件的解析库
972 0
|
Java 数据库连接 网络安全
已解决 IDEA Maven 项目中 “Could not find artifact“ 问题的常见情况和解决方案
已解决 IDEA Maven 项目中 “Could not find artifact“ 问题的常见情况和解决方案
16996 0
|
存储 人工智能 弹性计算
国内首个,阿里云入选Gartner®战略云平台魔力象限挑战者
近日,Gartner发布2024年《战略云平台魔力象限》(Magic Quadrant™ for Strategic Cloud Platform Services)报告,阿里云从利基者象限进入挑战者象限,成为国内首个入选该象限的中国公共云厂商。