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使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

linux下多个硬盘划分到同一挂载点问题

《linux下多个硬盘划分到同一挂载点问题》在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成... 目录linux下多个硬盘划分到同一挂载点需要明确的几个概念硬盘插上默认的是非lvm总结Linux下多

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要

nginx部署https网站的实现步骤(亲测)

《nginx部署https网站的实现步骤(亲测)》本文详细介绍了使用Nginx在保持与http服务兼容的情况下部署HTTPS,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录步骤 1:安装 Nginx步骤 2:获取 SSL 证书步骤 3:手动配置 Nginx步骤 4:测