记一次使用SpringBoot调用阿里身份认证识别OCR接口

开发工具:Idea2019.3
开发环境:SpringBoot2.2+mysql
接口测试工具:swagger
1.先看阿里给的api文档
记一次使用SpringBoot调用阿里身份认证识别OCR接口_第1张图片
不得不说,这个demo是再简洁明了不过了,直接一个main方法执行就可以,二话不说我就复制了代码,放一个main方法里面,然后…
记一次使用SpringBoot调用阿里身份认证识别OCR接口_第2张图片
我第一反应是,肯定缺少依赖,所以没有相应的包,就找不到方法,去百度找一波,还是一脸懵逼
记一次使用SpringBoot调用阿里身份认证识别OCR接口_第3张图片

又去看了demo,果然,怪我自己眼瞎,人家专门写了依赖地址的,
在这里插入图片描述
github上面给了这些依赖
记一次使用SpringBoot调用阿里身份认证识别OCR接口_第4张图片


		
			com.alibaba
			fastjson
			1.2.15
		
        
            org.apache.httpcomponents
            httpclient
            4.2.1
        
        
            org.apache.httpcomponents
            httpcore
            4.2.1
        
        
            commons-lang
            commons-lang
            2.6
        
        
            org.eclipse.jetty
            jetty-util
            9.3.7.v20160115
        
        
            junit
            junit
            4.5
            test
        
    

好,弄好了依赖,然后回来看,发现还是报红线,还是找不到方法,我就又。。。。。
记一次使用SpringBoot调用阿里身份认证识别OCR接口_第5张图片
只能再好好再看看demo,果然,我是真的瞎,只看了一半,人家清楚的写着重要提示,而我…
记一次使用SpringBoot调用阿里身份认证识别OCR接口_第6张图片把人家HttpUtils从github上面down下来,再去像模像样的用身份证照片生成一个BASE64,放进去,准备run一下,果然新的问题又来了,说我base64的字符串常量过长,我当时就想,这几个意思?难道他们用的时候不长?又不能改成Object类型之类的,方法都是封装好的。。。。。。。。。。。百度一波发现,我还是太菜了
记一次使用SpringBoot调用阿里身份认证识别OCR接口_第7张图片
解决方法如下:在生成BASE64的时候会因为字符超级长而换行,所以用String里面的replaceAll()把里面的换行符号去掉就可以了
记一次使用SpringBoot调用阿里身份认证识别OCR接口_第8张图片
写了个测试接口测了一下
记一次使用SpringBoot调用阿里身份认证识别OCR接口_第9张图片
差别还是有点大的,解决了这个,接着往下,跟着demo,这个亚子就应该能看到效果了
记一次使用SpringBoot调用阿里身份认证识别OCR接口_第10张图片
然而,打印了一堆,请求头之类的东西,不过值得注意的是,状态码对了的,200,所以肯定是我接收返回值处理方式不对
记一次使用SpringBoot调用阿里身份认证识别OCR接口_第11张图片
记一次使用SpringBoot调用阿里身份认证识别OCR接口_第12张图片
这次我果断的直接又去看了demo,然而这次没有漏掉什么了,它除了注释的,,,,,,,,,,等等,它注释了一段,那我把注释的放开看看呢
记一次使用SpringBoot调用阿里身份认证识别OCR接口_第13张图片
有那么个意思,但是,汉字全部变成了ASCII 编码的格式,看不懂,所以我又去找了半天“Java怎么将ascll码转为utf-8”,然后试了几个,看起来并没有什么效果
记一次使用SpringBoot调用阿里身份认证识别OCR接口_第14张图片
冷静想一下,emmmmmmmm,他的demo返回值是json格式,而我现在是String,转Json对象试一下呢
记一次使用SpringBoot调用阿里身份认证识别OCR接口_第15张图片
这次没有意外,成功了,没错就是要转成json格式,我还是太菜了,记录一下。
贴一个完整的代码纪念一下

 @RequestMapping(value = "code",method = RequestMethod.POST)
    public void findMethod(@RequestParam("code") MultipartFile file) throws Exception{
        String fileStr = "";
        if (!file.isEmpty())
        {
            BASE64Encoder encoder = new BASE64Encoder();
            // 通过base64来转化图片
                try {
                    fileStr =   (encoder.encode(file.getBytes())).replaceAll("\r\n", "");
                } catch (IOException e) {
                    e.printStackTrace();
                }
        }
        String host = "https://sfzread.market.alicloudapi.com";
        String path = "/sfzread";
        String method = "POST";
        String appcode = "自己的appcode";
        Map headers = new HashMap();
        //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105
        headers.put("Authorization", "APPCODE " + appcode);
        //根据API的要求,定义相对应的Content-Type
        headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
        Map querys = new HashMap();
        Map bodys = new HashMap<>();
        bodys.put("src",fileStr);
        try {
            HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);
            String msg = new String(EntityUtils.toString(response.getEntity()).getBytes(),"UTF-8");
            JSONObject object = JSONObject.parseObject(msg);
            System.out.println("aaaaaaaa"+object);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

记一次使用SpringBoot调用阿里身份认证识别OCR接口_第16张图片

你可能感兴趣的:(Spring,Boot)