树莓派通过HTTP/HTTPS协议访问翔云平台


翔云平台是一个专业的智能识别AP研发团队,可提供证件、发票、车牌、VIN等OCR API服务支持 Windows、 Linux主流服务器系统,我是通过该平台进行人脸识别的程序开发。

树莓派环境搭建

由于之前在Linux中已经进行过有关libcurl库的搭建,Linux中libcurl库的编译.但是之前进行单独的libcurl库安装并不能进行https协议的访问,这里我们还需要进行openssl库的安装,等待我们的openssl库编译完成后,再进行libcurl库编译。

openssl库的编译

1、获取openssl安装压缩包

wget https://www.openssl.org/source/openssl-1.1.1a.tar.gz

2、进行openssl压缩包的解压

tar -xzvf openssl-1.1.1a.tar.gz

3、编译步骤

这里我们就直接使用默认的配置方式进行配置,让它安装在默认路径下,具体的步骤和libcurl基本相同,也是三个步骤:

 ./configure
 sudo make
sudo make install

2、libcurl库编译

这里等待openssl库编译完成后,我们即可继续进行libcurl库的编译,主要这里的编译和之前在Linux中有一些不同,因为我们要进行https协议的访问,需要将ssl库链接配置
具体步骤也是三步:

 ./configure --prefix=$PWD/_install --with-ssl
 sudo make
sudo make install

到此为止就已经树莓派的环境搭建就已经准备完毕了。

代码运行

代码思路

这里代码的编写主要是结合翔云平台给出的一些开发方案进行编写。只需要在我之前的笔记Http协议之libcurl库实现.中的访问百度的代码结合起来进行修改即可
在这里插入图片描述

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include<stdlib.h>
#include <curl/curl.h>
#include<string.h>

typedef unsigned int bool;
#define true 1
#define false 0

char buf[1024] = {'\0'};

size_t readBuf( void *ptr, size_t size, size_t nmemb, void *stream)
{       
        strncpy(buf,ptr,1024);
        //printf("=======================getBuf========================\n");
        //printf("%s\n",buf);

}

char *getPicBase64(char *PicPath)//翔云平台需要将图片进行base64流进行传输
{
        char *bufPic;
        char cmd[128] = {'\0'};
        sprintf(cmd,"base64 %s > tmpfile",PicPath);
        system(cmd);

        int fd = open("./tmpfile",O_RDWR);
        int fileLen = lseek(fd,0,SEEK_END);
        lseek(fd,0,SEEK_SET);
        bufPic = (char *)malloc(fileLen+2);
        memset(bufPic,'\0',fileLen+2);
        read(fd,bufPic,fileLen);
        close(fd);
        system("rm -f tmpfile");
        return bufPic;


}

bool postUrl()
{
        CURL *curl;
        CURLcode res;
        char *postString;
        char *key = "***********************";//翔云平台提供的key和sercret
        char *secret = "*************************";
        int typeId = 21;
        char *format = "xml";

        char *bufPic1 = getPicBase64("./pic1.jpg");
        char *bufPic2 = getPicBase64("./pic3.jpg");

        int len = strlen(key)+strlen(secret)+strlen(bufPic1)+strlen(bufPic2)+124;
        postString = (char *)malloc(len);
        memset(postString,'\0',len);
        sprintf(postString,"&img1=%s&img2=%s&key=%s&secret=%s&typeId=%d&format=%s",bufPic1,bufPic2,key,secret,typeId,format);
        curl = curl_easy_init();
        if (curl)
        {

                curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postString);    // 指定post内容
                //curl_easy_setopt(curl, CURLOPT_PROXY, "10.99.60.201:8080");
                curl_easy_setopt(curl, CURLOPT_URL, "https://netocr.com/api/faceliu.do");   // 指定url
                curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, readBuf);
                res = curl_easy_perform(curl);
                printf("OK:%d\n",res);
                if(strstr(buf,"是") != NULL){
                        printf("the same person\n");
                }else{
                        printf("the different person\n");
                }
                curl_easy_cleanup(curl);
        }

        return true;
}
int main(void)
{
        //getUrl("/tmp/get.html");
        postUrl();
}

代码编译

这里要注意在Linux中编译使用的指令:

 gcc demo5.c -I /home/pi/faceRecognition/curl-7.71.1/_install/include -L /home/pi/faceRecognition/curl-7.71.1/_install/lib -lcurl 

在树莓派中编译会提示错误:

pi@raspberrypi:~/faceRecognition $ gcc demo5.c -I /home/pi/faceRecognition/curl-7.71.1/_install/include -L /home/pi/faceRecognition/curl-7.71.1/_install/lib -lcurl  
/home/pi/faceRecognition/curl-7.71.1/_install/lib/libcurl.so: undefined reference to `SSL_CTX_set_keylog_callback@OPENSSL_1_1_1'
/home/pi/faceRecognition/curl-7.71.1/_install/lib/libcurl.so: undefined reference to `SSL_CTX_set_post_handshake_auth@OPENSSL_1_1_1'
/home/pi/faceRecognition/curl-7.71.1/_install/lib/libcurl.so: undefined reference to `SSL_CTX_set_ciphersuites@OPENSSL_1_1_1'

这里要使用这条指令进行编译:

gcc demo5.c -I /home/pi/faceRecognition/curl-7.71.1/_install/include -L /home/pi/faceRecognition/curl-7.71.1/_install/lib -lcurl -lssl -lcrypto

然后代码就能编译成功了:

代码运行结果

pi@raspberrypi:~/faceRecognition $ ./a.out 
OK:23
the different person

注意图片放的位置和图片的名字。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值