c语言linux下https访问翔云AI人脸识别

2023-10-28 13:20

本文主要是介绍c语言linux下https访问翔云AI人脸识别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

c语言https访问翔云AI人脸识别

一. 安装环境

(一)安装opnssl:

下载openssl:

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

解压:

 tar xvf openssl-1.1.1a.tar.gz

编译:

cd openssl-1.1.1a/
./config
make -j4

安装:

sudo make install

二 安装libcurl库

下载地址

https://github.com/curl/curl/releases/tag/curl-7_71_1

解压

tar -xvf curl-7.71.1.tar.gz

编译

cd curl-7.71.1/
./configure --prefix=$HOME/curl --with-ssl
make -j4

安装

sudo make install

二. C代码的编写

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <curl/curl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/types.h>
#include <unistd.h>typedef unsigned int bool;  //编译器并不支持bool类型,定义成这样
#define false 0
#define true 1char *getPicFromOCRBase64(char *Filepath)//调用linux下的base64指令,将图片转成base64流的文件
{int fd;int filelen;char cmd[128]={'\0'};sprintf(cmd,"base64 %s > tmpFile",Filepath);system(cmd);
//	system("base64 mayun1.jpg > tmpFile");fd=open("./tmpFile",O_RDWR);filelen=lseek(fd,0,SEEK_END);lseek(fd,0,SEEK_SET);char *bufpic=(char *)malloc(filelen+2);memset(bufpic,'\0',filelen+2);read(fd,bufpic,filelen+128);system("rm -rf tmpFile");close(fd);return bufpic;
}
size_t readData( void *ptr, size_t size, size_t nmemb, void *stream)
{char buf[1024]={'\0'};strncpy(buf,ptr,1024);printf("===================get Data=========================\n");printf("%s",buf);}bool postUrl()
{CURL *curl;CURLcode res;char img1[12];char img2[12];char *key="翔云平台的人脸识别KEY";char *secret="翔云平台的人脸识别SECRET";int typeId=21;char *format="xml";char *bufpic1=getPicFromOCRBase64("图片名.jpg");char *bufpic2=getPicFromOCRBase64("图片名.jpg");int len=(strlen(key)+strlen(secret)+strlen(bufpic1)+strlen(bufpic2)+128);char *postString;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_COOKIEFILE, "/tmp/cookie.txt"); // 指定cookie文件curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postString);    // 指定post内容curl_easy_setopt(curl, CURLOPT_URL, "翔云平台人脸识别接口 ");   // 指定url  这里url实际上就是一个网址curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION , readData);res = curl_easy_perform(curl);printf("OK %d\n",res);curl_easy_cleanup(curl);}return true;}
int main(void)
{//	getUrl("/tmp/get.html");postUrl();
}

三 运行与调试

运行

gcc demo4.c -I ./curl-7.71.1/_install/include/ -L ./curl-7.71.1/_install/lib -lcurl
//注意这里-I指明curl库头文件的位置 -L指明库的位置。根据自己的安装路径来就行

运行出现以下错误
在这里插入图片描述
解决,其实就是配置环境变量,告诉编译器到哪个目录下去找头文件和库文件。

export LD_LIBRARY_PATH=./curl-7.71.1/_install/lib/

结果展示
在这里插入图片描述

这篇关于c语言linux下https访问翔云AI人脸识别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/293510

相关文章

Linux磁盘分区、格式化和挂载方式

《Linux磁盘分区、格式化和挂载方式》本文详细介绍了Linux系统中磁盘分区、格式化和挂载的基本操作步骤和命令,包括MBR和GPT分区表的区别、fdisk和gdisk命令的使用、常见的文件系统格式以... 目录一、磁盘分区表分类二、fdisk命令创建分区1、交互式的命令2、分区主分区3、创建扩展分区,然后

Linux中chmod权限设置方式

《Linux中chmod权限设置方式》本文介绍了Linux系统中文件和目录权限的设置方法,包括chmod、chown和chgrp命令的使用,以及权限模式和符号模式的详细说明,通过这些命令,用户可以灵活... 目录设置基本权限命令:chmod1、权限介绍2、chmod命令常见用法和示例3、文件权限详解4、ch

Linux内核之内核裁剪详解

《Linux内核之内核裁剪详解》Linux内核裁剪是通过移除不必要的功能和模块,调整配置参数来优化内核,以满足特定需求,裁剪的方法包括使用配置选项、模块化设计和优化配置参数,图形裁剪工具如makeme... 目录简介一、 裁剪的原因二、裁剪的方法三、图形裁剪工具四、操作说明五、make menuconfig

关于Java内存访问重排序的研究

《关于Java内存访问重排序的研究》文章主要介绍了重排序现象及其在多线程编程中的影响,包括内存可见性问题和Java内存模型中对重排序的规则... 目录什么是重排序重排序图解重排序实验as-if-serial语义内存访问重排序与内存可见性内存访问重排序与Java内存模型重排序示意表内存屏障内存屏障示意表Int

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

SpringBoot实现基于URL和IP的访问频率限制

《SpringBoot实现基于URL和IP的访问频率限制》在现代Web应用中,接口被恶意刷新或暴力请求是一种常见的攻击手段,为了保护系统资源,需要对接口的访问频率进行限制,下面我们就来看看如何使用... 目录1. 引言2. 项目依赖3. 配置 Redis4. 创建拦截器5. 注册拦截器6. 创建控制器8.

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资

SpringBoot如何访问jsp页面

《SpringBoot如何访问jsp页面》本文介绍了如何在SpringBoot项目中进行Web开发,包括创建项目、配置文件、添加依赖、控制层修改、测试效果以及在IDEA中进行配置的详细步骤... 目录SpringBoot如何访问JSP页python面简介实现步骤1. 首先创建的项目一定要是web项目2. 在

C语言线程池的常见实现方式详解

《C语言线程池的常见实现方式详解》本文介绍了如何使用C语言实现一个基本的线程池,线程池的实现包括工作线程、任务队列、任务调度、线程池的初始化、任务添加、销毁等步骤,感兴趣的朋友跟随小编一起看看吧... 目录1. 线程池的基本结构2. 线程池的实现步骤3. 线程池的核心数据结构4. 线程池的详细实现4.1 初

Linux限制ip访问的解决方案

《Linux限制ip访问的解决方案》为了修复安全扫描中发现的漏洞,我们需要对某些服务设置访问限制,具体来说,就是要确保只有指定的内部IP地址能够访问这些服务,所以本文给大家介绍了Linux限制ip访问... 目录背景:解决方案:使用Firewalld防火墙规则验证方法深度了解防火墙逻辑应用场景与扩展背景: