MN316 OpenCPU丨HTTP使用介绍

2023-12-05

HTTP(Hyper  Text  Transfer  Protocol)即超文本传输协议,是一个简单的请求-响应协议,通常运行在 TCP 之上,它指定了客户端可能发送给服务器消息类型以及得到什么类型响应。HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer)即超文本传输安全协议,在HTTP的基础下加入 SSL ,是以安全为目标的HTTP通道。这两种协议目前广泛运用于物联网设备中,是物联网工程师必备的技能。本文从函数接口、OpenCPU demo解析、注意事项三个方面对MN316 OpenCPU的HTTP demo及HTTPS demo进行解析。

、函数接口介绍

HTTP应用实例流程图如下

图1 HTTP业务流程图

1. 1 创建客户端实例

连接HTTP首先需要创建一个客户端实例。

图2 创建客户端实例

①url:即服务器的地址;

②callback:即客户端相关的回调函数,可以为空;

③handle:实例句柄。

1. 2客户端配置

同时对于此客户端实例进行相应的参数配置。

图3 客户端参数设置

①handle:实例句柄(客户端);

②cfg:客户端配置参数(具体参数如下)。

图4 客户端可配参数

1. 3 发送请求

接下来选择HTTP请求类型。

图5 发送请求

①handle:实例句柄(客户端);

②param:发送请求的参数(具体如下)。

图6 同步接口输入参数

请求类型又分为:GET请求,请求指定的页面信息;POST请求,向指定资源提交数据;PUT请求,向服务器指定的位置上传最新的内容;DELETE请求,请求服务器删除Request-URL资源;HEAD请求,用于获取报头信息。

图7 HTTP请求类型

图8 同步接口输入参数

③response:HTTP请求所返回的结果及存放在此,其具体结构如下。

图9 同步接口响应数据

1. 4 释放相应数据

得到结果后,释放数据。

图10 释放响应数据接口

1. 5 HTTP S请求

如果对安全性要求较高,则使用HTTPs来建立连接发送请求。具体实现方法参照上述 HTTP应用实例流程 ,需注意,第②步配置参数时要将ssl_enable值设为1使能,在第③步前需添加一个设置ssl证书的步骤。

图11 配置SSL参数

①ssl_id:同cm_HTTPclient_cfg_t中的ssl_id索引;

②type:ssl配置类型,具体有如下所示。

图12 SSL配置类型

③value:ssl配置参数(即证书)格式如下。

图13 根证书

1. 6 其他函数介绍

①删除客户端实例;

图14 删除客户端实例

②终止HTTP连接;

图15 终止HTTP连接

③获取响应结果码。

图16 获取响应结果

二、OpenCPU demo解析

标准版SDK的demo中提供了6个与HTTP相关的测试项。

图17 HTTP调用示例

在开始之前,需要先将服务器与相应路径设置好,本文示例为:

图18 HTTP设置服务器路径

2.1 HTTP 示例

GET/PUT/POST/DELTE整个流程相似,这里用GET做解析。

图19 HTTP GET Demo代码

根据上文介绍,一次请求主要分为4步,本实例完整地体现出这四步。

①创建一个客户端实例;

图20 创建客户端实例

②对这个客户端实例进行参数配置;

图21 配置客户端参数

③发送具体请求,得到返回结果;

④释放相应数据。

图22 释放相应数据

测试结果如下图。

图23 测试结果图

成功对HTTP服务器发送了get请求。

2.2 HTTP S 无证书加密测试

调用HTTPS的请求示例API接口:CM:HTTP:HTTPSGETTEST

图24 HTTPS配置参数

HTTPS GET与前面HTTP GET的主要区别是在客户端配置阶段ssl使能。

图25 HTTPS客户端配置参数

以及配置了ssl,但是此处是为了无证书加密测试,无身份验证,所以ssl实际上是空的。

图26 配置无证书方式加密

执行结果如下图

图27 HTTPS 无证书方式测试结果

2.3 HTTP S CA证书加密测试

这里就将上一节中ssl配置改为CA证书验证,并添加CA证书。

图28 添加CA证书

执行结果如下图:

图29 添加CA证书执行结果

可以看到,收到响应内容与没有身份验证时的数据并不相同,差异主要体现在报头(header)的长度以及请求的内容(content)上。

、注意事项

  1. 在调用函数接口前,需确认模组是否成功驻网,并确认已经配置好服务器与相对路径,否则可能导致调用函数接口无法收到正确的返回。
  2. demo中优先使用IPV6 DNS来解析,而有些SIM卡对于IPV6 DNS服务器请求会产生异常失败,这时将HTTP参数中dns_priority 设置为1,即将dns解析设置为IPV4优先,再重新测试一下。

图30 HTTP 可配参数

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MN316 OpenCPU丨HTTP使用介绍 的相关文章

随机推荐

  • 谈谈 .NET8 平台中对 LiteDB 的 CRUD 操作

    哪个啥 纯 C 编写的 LiteDB 你还不会操作 LiteDB 简介 LiteDB 安装 1 同步版 LiteDB 2 异步版 LiteDB Async LiteDB Studio LiteDB CRUD 操作举例 1 net cli 命
  • 【LeetCode:1423. 可获得的最大点数 | 滑动窗口】

    算法题 算法刷题专栏 面试必备算法 面试高频算法 越难的东西 越要努力坚持 因为它具有很高的价值 算法就是这样 作者简介 硕风和炜 CSDN Java领域新星创作者 保研 国家奖学金 高中学习JAVA 大学完善JAVA开发技术栈 面试刷题
  • LeetCode:1038. 从二叉搜索树到更大和树(反向中序遍历 C++、Java)

    目录 1038 从二叉搜索树到更大和树 题目描述 实现代码与解析 dfs 原理思路 1038 从二叉搜索树到更大和树 题目描述 给定一个二叉搜索树 root BST 请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和 提醒一
  • SSM 线上知识竞赛系统-计算机毕设 附源码 27170

    SSM线上知识竞赛系统 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化 电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用 信息时代的到来已成为不可阻挡的时尚潮流 人类发展的历史正进入一个新时代 在现实运用中 应
  • FL Studio2024中文语言版水果编曲软件

    FL Studio21 2这款软件在国内被广泛使用 因此又被称为 水果 它提供音符编辑器 可以针对作曲者的要求编辑出不同音律的节奏 例如鼓 镲 锣 钢琴 笛 大提琴 筝 扬琴等等任何乐器的节奏律动 此外 它还提供了方便快捷的音源输入 对于在
  • “丝路电商”与泛欧在线公共采购平台Peppol

    近期上海商务委员会公布 关于在上海市创建 丝路电商 合作先行区的方案 以下简称方案 方案中提出 全面贯彻落实党的二十大精神 立足新发展阶段 完整 准确 全面贯彻新发展理念 加快构建新发展格局 统筹发展和安全 发挥上海在改革开放中的突破攻坚作
  • Springboot养老院信息管理系统的开发-计算机毕设 附源码 27500

    Springboot养老院信息管理系统的开发 摘 要 随着互联网趋势的到来 各行各业都在考虑利用互联网将自己推广出去 最好方式就是建立自己的互联网系统 并对其进行维护和管理 在现实运用中 应用软件的工作规则和开发步骤 采用Springboo
  • 分治—快速选择算法

    文章目录 215 数组中的第K个最大元素 1 题目 2 算法原理 3 代码实现 LCR 159 库存管理 III
  • 分治-归并算法——LCR 170. 交易逆序对的总数

    文章目录 0 归并排序 1 题目 2 算法原理 3 代码实现 0 归并排序 归并排序是典型的分治 将数组分成若干个子数组 数组两两比较 不是很清楚的 可以查看此篇文章 数据结构 七大排序 这里以力扣 9
  • 分治-归并排序

    文章目录 315 计算右侧小于当前元素的个数 1 题目 2 算法原理 3 代码实现 493 翻转对
  • 小学全科教师是什么意思

    作为一名小学全科教师 我们的目标是提供全面的教育 帮助孩子们在各个学科领域中取得均衡发展 我们不仅教授语文 数学等传统学科 还注重培养孩子们的独立思考能力 创新精神和社交技巧 下面 我将从几个方面阐述小学全科教师的重要性和职责 小学全科教师
  • xampp环境安装

    XAMPP是完全免费且易于安装的Apache发行版 其中包含Apache MariaDB PHP和Perl 类似XAMPP的服务器套件还有很多 我用过的还有UPUPW 它们都极大的简化了开发环境的配置 下载链接 Download XAMPP
  • SiLM5350SBBCA-DG一款可提供分离输出 隔离门极驱动器完美UCC5350SBDR

    SiLM5350SBBCA DG是一款适用于IGBT MOSFET的单通道 隔离门极驱动器 具有10A拉电流和10A灌电流驱动能 力 提供分离输出 可单独控制 上升时间和下降时间 在SOP8W封装中具有5000 VRMS隔离耐压 在 SOP
  • 优维产品最佳实践第17期:善用控制台

    背 景 遇到页面报错时 是不是感到困扰 不知如何解决 页面响应缓慢时 是否感到迷茫 不清楚从何入手排查 面对主机高负载时 是不是觉得确认异常根因很有挑战 本期最佳实践为您讲解如何通过控制台排查定位 页面报错时 获取traceId确认报错组件
  • 【学习笔记】机器学习——GAN

    提出于2014年 GAN由两个神经网络组成 一个试图生成看起来与训练数据相似数据的 生成器 以及一个试图从虚假数据中分辨出真实数据的 判别器 生成器和判别器在训练期间相互竞争 对抗训练 训练竞争性网络 是一种重要的机器学习思想 生成器 G
  • CVE-2016-2510&CVE-2017-5586 BeanShell漏洞

    前言 首先我们需要了解BeanShell具体是做什么 BeanShell 是一种轻量级的可嵌入式脚本语言 用于在 Java 环境中执行脚本代码 它提供了一种简单 灵活的方式来扩展和定制 Java 应用程序的行为 允许开发人员动态地执行和评估
  • 2024年十大值得关注的编程语言

    探索2024年最有影响力的编程语言 Python的多功能无与伦比 JavaScript在Web领域的统治地位 Rust的高效性 等等 通过实际操作示例 发现适合您编程之旅的最佳选择 在技术世界不断变化的沙漂中导航是一段令人兴奋的旅程 充满了
  • react之封装有无Token(路由权限控制)的高阶组件

    TOC 前景 有些路由页面内的内容信息比较敏感 如果用户没有经过登录获取到有效Token 是没有权限跳转的 根据Token的有 无控制当前路由是否可以跳转就是路由的权限控制 技术方案 实现步骤 1 在 components 目录中 创建 A
  • Comparator接口

    Comparator接口 Comparator 是 Java 中用于比较对象的接口 它允许开发者实现自定义的比较逻辑 以用于对对象进行排序或者确定它们的顺序 主要方法 Comparator 接口中包含一个抽象方法 int compare T
  • MN316 OpenCPU丨HTTP使用介绍

    HTTP Hyper Text Transfer Protocol 即超文本传输协议 是一个简单的请求 响应协议 通常运行在 TCP 之上 它指定了客户端可能发送给服务器消息类型以及得到什么类型响应 HTTPS Hyper Text Tra