前提

放假了,社团还安排普通话培训培训的方式是线上和线下同时进行的。由于苹果手机里面没有文件夹,也不好找里面的文件。手机自带的录音功能觉得不好用,所以就使用了全民K歌里面的朗诵功能。看了一下下载到手机上面还是需要会员的。那来那么多的钱去看这个会员啊,下载回来苹果手机里面也不好找文件。所以就想到了采用API接口的方法来获取文件链接,然后就下载回来到电脑上就好了。想到就开始做!

开始

  1. API概念
    应用程序编程接口的简称,是一些预先定义的函数,目的是提供应用程序与开发人员基于软件或硬件网站等可以访问的一组例编程的能力,而不需要它的工作原理和结构。
  2. API的特点
    API是一个明确定义了的接口,可以为其他需要的功能提供服务,但是API接口往往是单功能的,例如我需要知道当地的天气怎么样,可以使用天气软件进行查看当地的天气,其实软件使用的正是API接口来实现的。就好像我编写了一个软件也要有查看天气的这个功能,那么是不是需要我们去学一个接口呢?其实完全没有这个必要。很多API供应商已经为我们写好了,我们直接可以调用就好了。API可以是私有的也可以是开源的,私有嘛就是自己写一个属于自己的API接口,开源的就是人家写好了,你直接调用就好了。
  3. API的分类
    面向对象语言的API:JavaAPI列表

库与框架的API:windows的API
API与协议:LDAP应用程序接口
API与设备接口:计算机的blos的数据接口
webAPI:谷歌地图的API阿里云的API市场,等等这些都是API的分类。

  1. http请求
    http请求包括4个部分分别是:URL(API调用地址),请求方式(post,get,put,delete),请求头部(Headers),请求主体(Body)
  2. 状态码
    http状态码和语义
200-OK[get]服务器成功返回用户请求的数据
201-CREATED[POST/PUT/PATCH]用户新建或者是修改数据成功
202-Accepted[*]表示当前请求过多,进入排队阶段
204-NO CONTENT-[DELETE]用户删除数据成功
  1. 返回数据格式
    json和XML,目前API使用最多的是json这个格式。

json数据格式表示方式:
1.表示对象;2.表示数组

图片文字识别API代码

<?php


    $url = "https://ocrhz.market.alicloudapi.com/rest/160601/ocr/ocr_passport.json";
    $appcode = "你的APPCODE";
    $file = "你的文件路径"; 
    //如果输入带有inputs, 设置为True,否则设为False
    $is_old_format = false;
    //如果没有configure字段,config设为空
    //$config = array(
    //    "side" => "face"
    //);
    $config = array()


    if($fp = fopen($file, "rb", 0)) { 
        $binary = fread($fp, filesize($file)); // 文件读取
        fclose($fp); 
        $base64 = base64_encode($binary); // 转码
    }
    $headers = array();
    array_push($headers, "Authorization:APPCODE " . $appcode);
    //根据API的要求,定义相对应的Content-Type
    array_push($headers, "Content-Type".":"."application/json; charset=UTF-8");
    $querys = "";
    if($is_old_format == TRUE){
        $request = array();
        $request["image"] = array(
                "dataType" => 50,
                "dataValue" => "$base64"
        );

        if(count($config) > 0){
            $request["configure"] = array(
                    "dataType" => 50,
                    "dataValue" => json_encode($config) 
                );
        }
        $body = json_encode(array("inputs" => array($request)));
    }else{
        $request = array(
            "image" => "$base64"
        );
        if(count($config) > 0){
            $request["configure"] = json_encode($config);
        }
        $body = json_encode($request);
    }
    $method = "POST";
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_FAILONERROR, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HEADER, true);
    if (1 == strpos("$".$url, "https://"))
    {
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    }
    curl_setopt($curl, CURLOPT_POSTFIELDS, $body);
    $result = curl_exec($curl);
    $header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE); 
    $rheader = substr($result, 0, $header_size); 
    $rbody = substr($result, $header_size);

    $httpCode = curl_getinfo($curl,CURLINFO_HTTP_CODE);
    if($httpCode == 200){
        if($is_old_format){
            $output = json_decode($rbody, true);
            $result_str = $output["outputs"][0]["outputValue"]["dataValue"];
        }else{
            $result_str = $rbody;
        }
        printf("result is :\n %s\n", $result_str);
    }else{
        printf("Http error code: %d\n", $httpCode);
        printf("Error msg in body: %s\n", $rbody);
        printf("header: %s\n", $rheader);
    }
?>
Last modification:August 8th, 2020 at 03:47 pm
如果觉得我的文章对你有用,请随意赞赏