content: package com.alibaba.ocr.demo;
  
  import com.alibaba.fastjson.JSON;
  import com.alibaba.fastjson.JSONArray;
  import com.alibaba.fastjson.JSONException;
  import com.alibaba.fastjson.JSONObject;
  import com.aliyun.api.gateway.demo.util.HttpUtils;
  import org.apache.http.HttpResponse;
  import org.apache.http.util.EntityUtils;
  
  import java.io.File;
  import java.io.FileInputStream;
  import java.io.IOException;
  import java.util.HashMap;
  import java.util.Map;
  
  import static org.apache.commons.codec.binary.Base64.encodeBase64;
  
  
  
  /**
   * 使用APPCODE进行云市场ocr服务接口调用
   */
  
  public class APPCodeDemo {
  
      /*
       * 获取参数的json对象
       */
      public static JSONObject getParam(int type, String dataValue) {
          JSONObject obj = new JSONObject();
          try {
              obj.put("dataType", type);
              obj.put("dataValue", dataValue);
          } catch (JSONException e) {
              e.printStackTrace();
          }
          return obj;
      }
  
      public static void main(String[] args){
  
          String host = "http://dm-51.data.aliyun.com";
          String path = "/rest/160601/ocr/ocr_idcard.json";
          String appcode = "你的APPCODE";
          String imgFile = "图片路径/图片URL";
          //请根据线上文档修改configure字段
          JSONObject configObj = new JSONObject();
          configObj.put("side", "face");
          String config_str = configObj.toString();
          //            configObj.put("min_size", 5);
          //            String config_str = "";
  
          String method = "POST";
          Map<String, String> headers = new HashMap<String, String>();
          //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359d73e9498385570ec139105
          headers.put("Authorization", "APPCODE " + appcode);
  
          Map<String, String> querys = new HashMap<String, String>();
  
          // 对图像进行base64编码
          String imgBase64 = "";
          try {
              if(imgFile.startsWith("http")){
                  imgBase64 = imgFile;
              }else {
                  File file = new File(imgFile);
                  byte[] content = new byte[(int) file.length()];
                  FileInputStream finputstream = new FileInputStream(file);
                  finputstream.read(content);
                  finputstream.close();
                  imgBase64 = new String(encodeBase64(content));
              }
          } catch (IOException e) {
              e.printStackTrace();
              return;
          }
          // 拼装请求body的json字符串
          JSONObject requestObj = new JSONObject();
          try {
              requestObj.put("image", imgBase64);
              if(config_str.length() > 0) {
                  requestObj.put("configure", config_str);
              }
          } catch (JSONException e) {
              e.printStackTrace();
          }
          String bodys = requestObj.toString();
  
          try {
              /**
               * 重要提示如下:
               * HttpUtils请从
               * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/src/main/java/com/aliyun/api/gateway/demo/util/HttpUtils.java
               * 下载
               *
               * 相应的依赖请参照
               * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/pom.xml
               */
              HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);
              int stat = response.getStatusLine().getStatusCode();
              if(stat != 200){
                  System.out.println("Http code: " + stat);
                  System.out.println("http header error msg: "+ response.getFirstHeader("X-Ca-Error-Message"));
                  System.out.println("Http body error msg:" + EntityUtils.toString(response.getEntity()));
                  return;
              }
  
              String res = EntityUtils.toString(response.getEntity());
              JSONObject res_obj = JSON.parseObject(res);
              System.out.println(res_obj.toJSONString());
          } catch (Exception e) {
              e.printStackTrace();
          }
      }
  }
  
  