0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

瑞芯微(EASY EAI)RV1126B http/https

广州灵眸科技有限公司 2026-01-26 16:53 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1. HTTP/HTTPS简介

HTTP(全称:Hyper Text Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器请求和应答标准,用于从WWW服务器传输超文本到本地的传输协议。

而HTTPS(全称:Hyper Text Transfer Protocol over SecureSocket Layer)是以安全为目标的HTTP通道,在原有HTTP的基础上通过传输加密和身份认证(即增加SSL/TSL安全访问协议)保证了传输过程的安全性。

1.1 HTTP和HTTPS的区别

HTTP和HTTPS的区别如下所示。

v2-c2a2b1f0b44dd75a3b0d1152872e0b81_720w.webp

1.2 请求和响应

典型的HTTP/HTTPS通讯就是应用在浏览器与网页服务器之间,浏览器即为客户端,负责发出请求,接收报文,渲染显示效果。网页服务器即为服务器,负责应答请求,管理服务器文件、处理具体业务。而在某些情况中,HTTP可以作为信息交换的通讯规则。

客户端需要资源时发送出来的即为请求报文,服务器接收到请求后向客户端返回的就是响应报文,HTTP规定了请求报文和响应报文的格式。

请求报文格式如下所示。

v2-6113b4d8fdcd9f4e66a8ffb51774d504_720w.webp

对于本文而言,我们主要关注请求方法和URL即可。

v2-a4df01291baf9ad193bbb3515c8e343e_720w.webp

响应报文示例如下所示,主要组成部分有:

l 状态行(包含协议版本、状态值、状态短语);

l 响应消息头(以键值对的形式存在,例如时间、数据类型、数据长度等);

l 空行(用于区分报文头和响应正文);

l 响应正文(对于网页而言,常见的是html代码,也可以是音视频文件、图片,通常是消息报头的Content-Type指定)。

v2-e134a6d53020b0f89c56a03c9fc1e08a_720w.webp

1.3 URL

假设我们搭建了一个环境检测服务器系统,用于采集、记录全市各个观测点的环境数据,假定服务器的存放结构如下所示,此服务器在公网上的域名为www.huanjin.com,里面有两个设备,每个设备存放了不同日子的气温数据,当客户端需要调取具体设备具体数据时,则需要提交一个唯一的路径给服务器查找,这个唯一路径就是URL。

v2-4fdf5bc003e27c45417e1d44943d60f9_720w.webp

URL(Uniform Resource Locator,统一资源定位符),存放在请求报文的请求行内,充当路标作用。当我们浏览网页时,点击进入不同的组件,浏览器就会自动的帮我们填充不同的URL,地址的构成如下所示。完整的URL包含:协议部分、网址部分、文件地址。

v2-b2f56945261672503c768c9b2134d4c7_720w.webp

具体内容如下所示。

v2-16eaeebad8811d9846dbbdef84e9220c_720w.webp

例如我们想获取环境检测服务器中设备1的12月25号数据,填写的请求报文就是,GET请求,URL为“http://www.huanjin.com/Device-1/日期数据/20211225”。

URL还可以携带变量信息,名称为URL查询字符串,形式为:

https://www.Adblock.com/s?a=123&b=234

变量存放在URL结尾处,以“?”开头,以“参数名=值”的键值对形式存放,多个参数用“&”分割。

1.4 HTTPS使用要点

通过以上叙述可知,使用HTTPS需要时刻围绕以下几点:

l CA证书,HTTPS协议用SSL/TSL;

l 发送数据使用POST请求,服务器地址使用URL格式表示;

l 接收数据、文件使用GET请求,服务器地址使用URL格式表示;

我司的easyeai-api软件开源库将复杂的报文格式、收发操作做了统一的封装,为客户提供简单便捷的调用方式实现HTTP/HTTPS通讯功能。

2. 快速上手

2.1 开发环境准备

如果您初次阅读此文档,请阅读《入门指南/开发环境准备/Easy-Eai编译环境准备与更新》,并按照其相关的操作,进行编译环境的部署

在PC端Ubuntu系统中执行run脚本,进入EASY-EAI编译环境,具体如下所示。

cd ~/develop_environment ./run.sh 2204

v2-e1127efd76bcca3331922be6d17e546f_720w.webp

2.2 源码下载以及例程编译

在EASY-EAI编译环境下创建存放源码仓库的管理目录:

cd /opt mkdir EASY-EAI-Toolkit cd EASY-EAI-Toolkit

通过git工具,在管理目录内克隆远程仓库

git clone https://github.com/EASY-EAI/EASY-EAI-Toolkit-1126B.git

v2-67d8e73ccfe13280db05364195d1679f_720w.webp

注:

* 此处可能会因网络原因造成卡顿,请耐心等待。

* 如果实在要在gitHub网页上下载,也要把整个仓库下载下来,不能单独下载本实例对应的目录。

进入到对应的例程目录执行编译操作,具体命令如下所示:

cd EASY-EAI-Toolkit-1126B/Demos/netProtocol-http/ ./build.sh

注:

* 由于依赖库部署在板卡上,因此交叉编译过程中必须保持/mnt挂载。

v2-6412cea24b3b6f873e455bb9aace39e7_720w.webp

2.3 例程运行

通过串口调试或ssh调试,进入板卡后台,定位到例程部署的位置,如下所示:

cd /userdata/Demo/netProtocol-http

v2-7f369429f7bb2141104a297bc371cfa3_720w.webp

运行例程命令如下所示:

./test-http_server & ./test-http_client

2.4 运行效果

执行效果如下所示。

v2-7cdcc439786cd1e21fa678e217ffb14c_720w.webp

3. HTTPS库函数说明

本章节介绍EASY EAI的HTTPS库函数的使用方法。

3.1 引用方式

EASY EAI api库位于本仓库的easyeai-api目录中。为方便客户在本地工程中直接调用我们的EASY EAI api库,此处列出工程中需要链接的库以及头文件等,方便用户直接添加。

v2-83fa7326184cd8b8904ad2d77a0067fa_720w.webp

API源代码路径为EASY-EAI-Toolkit-1126B/easyeai-api/netProtocol/http/。用户可通过源代码了解接口实现,甚至可对源码进行修改。

3.2 设置证书

设置证书的函数原型为:

void set_customer_crt(const char *crt_file);

具体介绍如下所示。

v2-393f3508161d6553cb81f4de64f2789a_720w.webp

3.3 向HTTP/HTTPS服务器发送form-data数据

3.3.1 清除form_data缓存

清除缓存的函数原型为:

void clear_multipart();

具体介绍如下所示。

v2-cd0f76b838d3275e44fe6ad7f779cefe_720w.webp

3.3.2 填充form_data缓存

填充缓存的函数原型如下所示,传输的数据以键值对的形式传输。

void add_multipart_form_data(const char *key, const char *value);

具体介绍如下所示。

v2-94e3ddd7c5d06a1e4a06ba5fb469a871_720w.webp

3.3.3 发送form-data数据

由于HTTP和HTTPS的加密方式有所区别,故分别定义了两个函数,但参数一致,函数原型如下所示。

int32_t send_data_to_Http(const char *server, const char *func, char *result, uint32_t result_lenth); int32_t send_data_to_Https(const char *server, const char *func, char *result, uint32_t result_lenth);

具体介绍如下所示。

v2-899668a92ed5bf901c040a4b0a14fa17_720w.webp

3.4 向HTTP/HTTPS服务器发送json数据

由于HTTP和HTTPS的加密方式有所区别,故分别定义了两个函数,但参数一致,函数原型如下所示。

int32_t send_json_to_Http(const char *server, const char *func, const char *json, char *result, uint32_t result_length); int32_t send_json_to_Https(const char *server, const char *func, const char *json, char *result, uint32_t result_length);

具体介绍如下所示。

v2-81f1965db97f6a10b0f86bbf879853e1_720w.webp

3.5 向HTTP/HTTPS服务器获取文件

由于HTTP和HTTPS的加密方式有所区别,故分别定义了两个函数,但参数一致,函数原型如下所示。

int32_t get_file_from_https(const char *url, const char *func, const char *filePath); int32_t get_file_from_http(const char *url, const char *func, const char *filePath);

具体介绍如下所示。

v2-b08fb0d627e41c994dfd2655e29cc271_720w.webp

4. 使用实例

示例代码路径为EASY-EAI-Toolkit-1126B/Demos/netProtocol-http/test-http_client.c

4.1 设置CRT密钥文件

设置密钥文件操作如下所示。

set_customer_crt("/userdata/customer.crt");

4.2 发送form_data数据

4.2.1 填充数据

清空form_data数据缓冲区,然后填充form_data缓冲区数据。

clear_multipart(); add_multipart_form_data("name", "gzlmo"); add_multipart_form_data("id", "888888"); add_multipart_form_data("pwd", "123456");

4.2.2 发送数据

发送操作如下所示。

send_data_to_Http("192.168.3.191:50000", "/add", res, sizeof(res));

4.3 发送json数据

发送操作如下所示。

send_json_to_Http("192.168.3.191:50000", "/add", "{name : "gzlmo"}", res, sizeof(res));

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11817

    浏览量

    219557
  • 瑞芯微
    +关注

    关注

    27

    文章

    855

    浏览量

    54669
  • EASY-EAI灵眸科技

    关注

    4

    文章

    104

    浏览量

    3727
  • RV1126B
    +关注

    关注

    0

    文章

    93

    浏览量

    245
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    (EASY EAI)RV1126B 音频输入

    1.声卡资源介绍EASY-EAI-Nano-TB仅有一块由RV1126B主控输出的声卡。通过串口调试或ssh调试,可以进入开发板终端。执行aplay命令查看声卡相关的详细信息,如下所示
    的头像 发表于 12-18 13:41 2582次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> 音频输入

    (EASY EAI)RV1126B PWM使用

    1.PWM简介1.1开发板PWM资源1.2查找PWM节点rv1126b的pwm资源表如下:【PWM1CH0】对应的是pwm1_4ch_0,寄存地址为20700000。【PWM1CH1】对应
    的头像 发表于 01-06 10:49 8316次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> PWM使用

    (EASY EAI)RV1126B 音频输出

    1.声卡资源介绍EASY-EAI-Nano-TB仅有一块由RV1126B主控输出的声卡。通过串口调试或ssh调试,可以进入开发板终端。执行aplay命令查看声卡相关的详细信息,如下所示
    的头像 发表于 04-01 17:13 8537次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> 音频输出

    EASY EAI Nano-TB(RV1126B)开发板试用】+初识篇

    Nano-TB是灵眸科技研发的一款应用于AIoT领域的开发板,它基于RV1126B处理器,集成了4个Cortex-A53及独立的NEON协处理器,它支持4K@30fps的H.
    发表于 10-25 22:06

    EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-灯闪

    接上文【EASY EAI Nano-TB(RV1126B)开发板试用】开箱测评 https://pan.baidu.com/s/15pnbJXPN5TrfV2KfsKaZyQ?pwd=
    发表于 11-01 21:26

    EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-红绿灯项目

    接上文【EASY EAI Nano-TB(RV1126B)开发板试用】通过wifi连接,使用ssh登录EASY EAI Nano-TB(
    发表于 11-02 18:34

    EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-红绿灯按钮项目

    0接上文【EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-红绿灯项目-实现开机起动 EASYEAINano-TB(RV1126B
    发表于 11-03 10:00

    EASY EAI Nano-TB(RV1126B)开发板试用】+1、开箱上电

    ,避免因接触不良导致显示或采集异常。 2 硬件解析:强劲AI核心与丰富接口 2.1 核心处理器性能 EASY EAI Nano-TB开发板的核心基于
    发表于 11-19 21:39

    EASY EAI Nano-TB(RV1126B)开发板试用】介绍、系统安装

    ,并介绍了系统镜像安装部署的相关流程。 介绍 EASY-EAI-Nano-TB是灵眸科技研发的一款应用于AIoT领域的AIOT主板。 核心板基于
    发表于 12-23 18:05

    RV1126系列选型指南:从RV1126RV1126B,一文看懂升级差异

    2025年7月,正式发布新一代AI视觉芯片RV1126B。作为其金牌方案商,EASYEAI灵眸科技同步推出搭载该芯片的AIoT核心板EAI11
    的头像 发表于 09-04 10:50 5169次阅读
    <b class='flag-5'>RV1126</b>系列选型指南:从<b class='flag-5'>RV1126</b>到<b class='flag-5'>RV1126B</b>,一文看懂升级差异

    【免费试用】EASY EAI Nano-TB(RV1126B)开发套件评测

    EASY-EAI-Nano-TB是灵眸科技研发的一款应用于AIoT领域的AIOT主板。核心板基于RV1126B处理器设计,并引入了新
    的头像 发表于 09-23 08:09 1263次阅读
    【免费试用】<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b> Nano-TB(<b class='flag-5'>RV1126B</b>)开发套件评测

    RV1126B特性概述

    RV1126BRockchip在2025年第二季度全新推出的Arm架构AI视觉芯片,搭载4核Cortex-A53与自研3Tops算力NPU。全面替代上一代的
    的头像 发表于 10-09 11:22 2202次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RV1126B</b>特性概述

    替代升级实锤!实测RV1126B,CPU性能吊打RV1126

    AI智能芯片迭代提速,推出了全新的Arm架构AI视觉芯片RV1126B,是否替换RV1126,CPU性能是挤牙膏还是大突破。带着这些核
    的头像 发表于 12-11 17:13 2551次阅读
    替代升级实锤!实测<b class='flag-5'>RV1126B</b>,CPU性能吊打<b class='flag-5'>RV1126</b>

    (EASY EAI)RV1126B 人体关键点识别

    的特点。本人员检测算法在数据集表现如下所示:基于EASY-EAI-Nano-TB(RV1126B)硬件主板的运行效率:17个人体关键点索引定义:2.快速上手2.1开发
    的头像 发表于 01-23 10:13 3640次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> 人体关键点识别

    (EASY EAI)RV1126B rknn-toolkit-lite2使用方法

    1.rknn-toolkit-lite2介绍RKNN-Toolkit-Lite2是(Rockchip)专为旗下RK系列芯片(如RV1126B、RK3576、RK3588等)打造的
    的头像 发表于 04-22 17:38 405次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> rknn-toolkit-lite2使用方法