此Java文章是基本聚合数据(https://www.juhe.cn/)-----证件识别接口来演示,基本HTTP POST请求上传图片并接收JSON数据来处理。

使用前你需要通过https://www.juhe.cn/docs/api/...申请一个名片识别的appkey
1.支持的证件类型清单
请求地址:http://api2.juheapi.com/cardr...您申请的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/cardr...

// 此方法是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("\r\n");  
                }  
            }  
        }  
        return sb.toString();  
    }  

tinna
179 声望5 粉丝

过去之心不可得,现在之心不可得,未来之心不可得!