zoukankan      html  css  js  c++  java
  • 身份证识别接口编写的JAVA调用示例

    java文章是基本聚合数据证件识别接口来演示,基本HTTP POST请求上传图片并接收JSON数据来处理。

    使用前你需要通过

    https://www.juhe.cn/docs/api/id/153

    申请一个名片识别的appkey

    1.支持的证件类型清单

    请求地址:http://api2.juheapi.com/cardrecon/supportlist?key=您申请的appkey

    此接口可通过GET请求得到结果,java网络请求有HttpClient相关工具包及HttpURLConnection相关的包等,这里用的是HttpClient,需要先导包,如果用maven话会更方便直接把:

    <dependency><groupid>org.apache.httpcomponents</groupid>
    <artifactid>httpmime</artifactid>
    <version>4.3.6</version>
    </dependency>
    <dependency>
    <groupid>org.apache.httpcomponents</groupid>
    <artifactid>httpclient</artifactid>
    <version>4.4.1</version>
    </dependency>

    复制到配置文件 pom.xml

    请求代码如下:

    public static String get() throws IOException {
            // 创建HttpClient对象
            CloseableHttpClient httpClient = HttpClients.createDefault();
            CloseableHttpResponse response = null;
            String result = null;
            try {
                HttpGet httpGet = new HttpGet("http://api2.juheapi.com/cardrecon/supportlist?key="+ appKey);
                // 执行网络请求
                response = httpClient.execute(httpGet);
                // 获取请求实体
                HttpEntity resEntity = response.getEntity();
                if (resEntity != null) {
                    // ConverStreamToString是下面写的一个方法是把网络请求的字节流转换为utf8的字符串
                    result = ConvertStreamToString(resEntity.getContent(), "UTF-8");
                }
                EntityUtils.consume(resEntity);
            } catch (Exception e) {
            } finally {
                // 关闭请求
                response.close();
                httpClient.close();
            }
            // 得到的是JSON类型的数据需要第三方解析JSON的jar包来解析
            return result;
        }

    2.证件图片识别

    请求地址:http://api2.juheapi.com/cardrecon/upload

    // 此方法是POST请求上传的参数中包含本地图片信息File类型
        public static String post(String type, File file) throws Exception {
            CloseableHttpClient httpClient = HttpClients.createDefault();
            CloseableHttpResponse response = null;
            String result = null;
            // HttpClient请求的相关设置,可以不用配置,用默认的参数,这里设置连接和超时时长(毫秒)
            RequestConfig config = RequestConfig.custom().setConnectTimeout(30000).setSocketTimeout(30000).build();
            try {
                HttpPost httppost = new HttpPost("http://api2.juheapi.com/cardrecon/upload");
                // FileBody封装File类型的参数
                FileBody bin = new FileBody(file);
                // StringBody封装String类型的参数
                StringBody keyBody = new StringBody(key, ContentType.TEXT_PLAIN);
                StringBody typeBody = new StringBody(type, ContentType.TEXT_PLAIN);
                // addPart将参数传入,并指定参数名称
                HttpEntity reqEntity = MultipartEntityBuilder.create()
                        .addPart("pic", bin).addPart("key", keyBody)
                        .addPart("cardType", typeBody).build();
                httppost.setEntity(reqEntity);
                httppost.setConfig(config);
                // 执行网络请求并返回结果
                response = httpClient.execute(httppost);
                HttpEntity resEntity = response.getEntity();
                if (resEntity != null) {
                    result = ConvertStreamToString(resEntity.getContent(), "UTF-8");
                }
                EntityUtils.consume(resEntity);
            } finally {
                response.close();
                httpClient.close();
            }
            // 得到的是JSON类型的数据需要第三方解析JSON的jar包来解析
            return result;
        }
     
        // 此方法是把传进的字节流转化为相应的字符串并返回,此方法一般在网络请求中用到
        public static String ConvertStreamToString(InputStream is, String charset)
                throws Exception {
            StringBuilder sb = new StringBuilder();
            try (InputStreamReader inputStreamReader = new InputStreamReader(is,charset)) {
                try (BufferedReader reader = new BufferedReader(inputStreamReader)) {
                    String line = null;
                    while ((line = reader.readLine()) != null) {
                        sb.append(line).append("
    ");
                    }
                }
            }
            return sb.toString();
        }
  • 相关阅读:
    【Java】XML文件的解析
    PE知识复习之PE合并节
    PE知识复习之PE的重定位表
    PE知识复习之PE的两种状态
    PE知识复习之PE的节表
    PE知识复习之PE的各种头属性解析
    PE知识复习之PE的导入表
    PE知识复习之PE的导出表
    PE知识复习之PE的绑定导入表
    第三讲扩展,VA,RVA,FA(RAW),模块地址的概念
  • 原文地址:https://www.cnblogs.com/annie00/p/5773186.html
Copyright © 2011-2022 走看看