public Map<String, Object> pictureRecognition(String recotype, MultipartFile imageFile) {
         String result = null;
         // 文件输入流
         FileInputStream fs = null;
         try {
             String configValue = cpConfigService.getValueByConfigKey("ocr_server_config", "{'uri':'http://cloud.exocr.com/recognize','username':'test','password':'test'}");
             Map<String, String> configMap = JsonUtils.json2Map2(configValue);
             String postUrl = configMap.get("uri"); // 服务地址
             Map<String, String> postParam = new HashMap<String, String>(10);
             postParam.put("username", configMap.get("username")); // 用户名, 公有云测试可使用’test’
             postParam.put("password", configMap.get("password")); // 密码,公有云测试可使用 ’test’
             postParam.put("recotype", recotype); // BankCard
             postParam.put("encoding", "utf-8"); // 返回结果的文字编码方式,取值包括:utf-8, 默认值 gb2312
             postParam.put("head_portrait", "0"); // 是否返回头像(base64格式),只对身份证识别有效,取值范围:0,默认,不返回头像    1,则返回身份证的头像照片
             postParam.put("crop_image", "0"); // 是否返回切边(base64格式),取值:0,    默认,不返回切边图    1,    返回切边图
             postParam.put("b64", "1"); // 输入图片是否为base64格式,取值:0,    默认,二进制格式   1,    base64格式
             // base64编码图像
             String base64 = new String(Base64.encodeBase64(imageFile.getBytes()));
             postParam.put("image", base64); // 待识别的图像,可以是二进制也可以是base64格式
             result = HttpUtil.postUrlAsString(postUrl, postParam, null, "utf-8");
             logger.info("OCR识别结果{}", result);
         } catch (Exception e) {
             logger.error("OCR识别异常:", e);
             StringBuilder sb = new StringBuilder();
             sb.append("{'Error':'99','Details':'OCR识别异常:");
             sb.append(e.getMessage()).append("'}");
             result = sb.toString();
         } finally {
             if (null != fs) {
                 try {
                     fs.close();
                 } catch (IOException e) {
                     logger.error("File input stream close exception:", e);
                 }
             }
         }

         try {
             return JsonUtils.json2Map(result);
         } catch (Exception e) {
             logger.error("json to map exception:", e);
         }

         return null;
     }
   public static String postUrlAsString(String url,
             Map<String, String> params, Map<String, String> reqHeader,
             String encode) throws Exception {
         // 开始时间
         long t1 = System.currentTimeMillis();
         // 获得HttpPost对象
         HttpPost httpPost = getHttpPost(url, params, encode);
         // 发送请求
         String result = executeHttpRequest(httpPost, reqHeader, encode);
         // 结束时间
         long t2 = System.currentTimeMillis();
         // 调试信息
         logger.debug("url:" + url);
         logger.debug("params:" + params.toString());
         logger.debug("reqHeader:" + reqHeader);
         logger.debug("encode:" + encode);
         logger.debug("result:" + result);
         logger.debug("consume time:" + ((t2 - t1)));
         // 返回结果
         return result;
     }  
   private static HttpPost getHttpPost(String url, Map<String, String> params,
             String encode) throws UnsupportedEncodingException {
         HttpPost httpPost = new HttpPost(url);
         if (params != null) {
             List<NameValuePair> form = new ArrayList<NameValuePair>();
             for (String name : params.keySet()) {
                 form.add(new BasicNameValuePair(name, params.get(name)));
             }

             UrlEncodedFormEntity entity = new UrlEncodedFormEntity(form,
                     encode);
             httpPost.setEntity(entity);
         }

         return httpPost;
     }  
  /**
      * 执行HTTP请求
      *
      * @param request
      *            请求对象
      * @param reqHeader
      *            请求头信息
      * @return 内容字符串
      */
     private static String executeHttpRequest(HttpUriRequest request,
             Map<String, String> reqHeader, String encode) throws Exception {
         HttpClient client = null;
         String result = null;
         try {
             // 创建HttpClient对象
             client = new DefaultHttpClient();
             // 设置连接超时时间
             client.getParams().setParameter(
                     CoreConnectionPNames.CONNECTION_TIMEOUT, 60);
             // 设置Socket超时时间
             client.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,
                     36600);
             // 设置请求头信息
             if (reqHeader != null) {
                 for (String name : reqHeader.keySet()) {
                     request.addHeader(name, reqHeader.get(name));
                 }
             }
             // 获得返回结果
             HttpResponse response = client.execute(request);
             // 如果成功
             if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                 encode = StringUtils.isNotEmpty(encode) ? encode : DEFAULT_ENCODE;
                 result = EntityUtils.toString(response.getEntity(), encode);
             } else {
                 StringBuffer errorMsg = new StringBuffer();
                 errorMsg.append("httpStatus:");
                 errorMsg.append(response.getStatusLine().getStatusCode());
                 errorMsg.append(response.getStatusLine().getReasonPhrase());
                 errorMsg.append(", Header: ");
                 Header[] headers = response.getAllHeaders();
                 for (Header header : headers) {
                     errorMsg.append(header.getName());
                     errorMsg.append(":");
                     errorMsg.append(header.getValue());
                 }
                 logger.error("HttpResonse Error:" + errorMsg);
                 result = "{'Error':'98','Details':'" + errorMsg.toString() + "'}";
             }
         } catch (Exception e) {
             logger.error("http连接异常", e);
             throw new Exception("http连接异常");
         } finally {
             try {
                 client.getConnectionManager().shutdown();
             } catch (Exception e) {
                 logger.error("finally HttpClient shutdown error", e);
             }
         }
         return result;
     }  

httpclient案例一(调用识别接口)的更多相关文章

  1. HttpClient与浏览器调用服务接口差异

    我用httpclient访问接口,统计图有些不均匀,差距较大 ,有时只有几十毫秒,下图看到这种情况占多数,600-800毫秒之间的算是浏览器正常的产生调用接口的时间耗时 然后用jmeter跑时都是均值 ...

  2. HttpClient Get/Post方式调用Http接口

    本节摘要:本节主要分别介绍如何用get方式.post方式向http接口发送数据. preparation 1. 项目环境如下: myeclipse6.5 .tomcat5.0.system:xp.JD ...

  3. js调用Webservice接口案例

    第一步:新建Webservice接口 主文件方法 using System;using System.Collections.Generic;using System.Web;using System ...

  4. 身份证识别接口编写的JAVA调用示例

    此java文章是基本聚合数据证件识别接口来演示,基本HTTP POST请求上传图片并接收JSON数据来处理. 使用前你需要通过 https://www.juhe.cn/docs/api/id/153 ...

  5. HttpClient结合PostMethod调用接口

    HttpClient结合PostMethod调用接口   解决方法: HttpClient client = new HttpClient(); PostMethod post = new PostM ...

  6. Java之HttpClient调用WebService接口发送短信源码实战

    摘要 Java之HttpClient调用WebService接口发送短信源码实战 一:接口文档 二:WSDL 三:HttpClient方法 HttpClient方法一 HttpClient方法二 Ht ...

  7. HttpClient调用RestFul接口(post和get方式)

    /** * @version V1.0 * @Description 调用http接口工具类 * @Author pc * @Date 2018/3/2 11:03 */public class Ht ...

  8. 用PHP调用证件识别接口识别本地图片

    前置条件 在开始前,请作如下准备:1.学会用PHP输出“Hello World” 2.去聚合数据申请证件识别专用的KEY:https://www.juhe.cn/docs/api/id/153 操作步 ...

  9. WebApi接口 - 如何在应用中调用webapi接口

    很高兴能再次和大家分享webapi接口的相关文章,本篇将要讲解的是如何在应用中调用webapi接口:对于大部分做内部管理系统及类似系统的朋友来说很少会去调用别人的接口,因此可能在这方面存在一些困惑,希 ...

随机推荐

  1. bzoj 4591: [Shoi2015]超能粒子炮·改 [lucas定理]

    4591: [Shoi2015]超能粒子炮·改 题意:多组询问,求 \[ S(n, k) = \sum_{i=0}^n \binom{n}{i} \mod 2333,\ k \le n \le 10^ ...

  2. HDU 5608 function [杜教筛]

    HDU 5608 function 题意:数论函数满足\(N^2-3N+2=\sum_{d|N} f(d)\),求前缀和 裸题-连卷上\(1\)都告诉你了 预处理\(S(n)\)的话反演一下用枚举倍数 ...

  3. BZOJ 1367: [Baltic2004]sequence [可并堆 中位数]

    1367: [Baltic2004]sequence Time Limit: 20 Sec  Memory Limit: 64 MBSubmit: 1111  Solved: 439[Submit][ ...

  4. 一、scrapy的下载安装---Windows(安装软件太让我伤心了)

    写博客就和笔记一样真的很有用,你可以随时的翻阅.爬虫的爬虫原理与数据抓取.非结构化与结构化数据提取.动态HTML处理和简单的图像识别已经学完,就差整理博客了 开始学习scrapy了,所以重新建了个分类 ...

  5. 从Vue.js源码角度再看数据绑定

    写在前面 因为对Vue.js很感兴趣,而且平时工作的技术栈也是Vue.js,这几个月花了些时间研究学习了一下Vue.js源码,并做了总结与输出.文章的原地址:https://github.com/an ...

  6. Java经典编程题50道之四十六

    编程实现两个字符串的连接. public class Example46 {    public static void main(String[] args) {        addString( ...

  7. Java经典编程题50道之十六

    输出九九乘法表. public class Example16 {    public static void main(String[] args) {        table(9);    } ...

  8. Linux常见目录及其作用

    在Linux操作系统中,所有文件和目录都被组织成一个以根节点开始的倒置的树状结构.如下图 系统一般以 / 来表示根目录.在根目录之下的可以是目录也可以是文件,而每一个目录中又可以包含子目录文件.如此反 ...

  9. OKL4虚拟化技术跟踪

    这篇博客准备介绍OKL4的研究进展,本文的内容主要根据我个人阅读<OKL4_LongPaper_2010_HW_VM>这篇文章之后的理解,我也根据这篇论文的内容做了一些实验,奈何此论文涉及 ...

  10. Flask下载文件

    前言 由于最近在做文件管理模块的功能,所以难免会遇到文件上传下载这块的功能.不过文件上传那块是调用的OSS api,所以接触的不多. 文件的下载: 1. 接口返回真实的文件 这种情况比较简单, fla ...