证件识别API调用示例

    此篇java文章是基本聚合数据(http://www.juhe.cn)-----证件识别接口来演示,基本HTTP POST请求上传图片并接收JSON数据来处理,其他与上传图片相关的接口请求可参考此篇文章。


使用前你需要:

①:通过 http://www.juhe.cn/docs/api/id/153申请一个名片识别的appkey

1.支持的证件类型清单

请求地址:http://v.juhe.cn/certificates/typeList.php?key=您申请的appkey

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

org.apache.httpcomponentshttpmime4.3.6org.apache.httpcomponentshttpclient4.4.1


复制到配置文件 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://v.juhe.cn/certificates/typeList.php?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://v.juhe.cn/certificates/query.php

// 此方法是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://v.juhe.cn/certificates/query.php");
			// 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();
	}


登录 后可发表评论

    最新发布
    聚合数据©版权所有