MN316 OpenCPU丨HTTP使用介绍

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 HTTPS请求

如果对安全性要求较高,则使用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 HTTPS 无证书加密测试

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

图24 HTTPS配置参数

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

图25 HTTPS客户端配置参数

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

图26 配置无证书方式加密

执行结果如下图

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

2.3 HTTPS 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 可配参数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/259571.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows 系统,TortoiseSVN 无法修改 Log 信息解决方法

使用SVN提交版本信息时,注释内容写的不全。通过右键TortoiseSVN的Show log看到提交的的注释,右键看到Edit log message的选项,然而提交后却给出错误提示: Repository has not been enabled to accept revision propchanges; ask …

炫酷不止一面:探索JavaScript动画的奇妙世界(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

wps word中图片 一保存失真变糊

在wps中依次点击 文件-文字偏好设置-常规与保存 勾选不压缩文件中的图像 并 将默认目标输出设置为220ppi 即可

c# 中间件简说

一、什么是中间件 中间件是一种装配到应用管道以处理请求和响应的软件。是介于request与response处理过程之间的一个插件(一道处理过程),相对比较轻量级,并且在全局上会影响到request对象和response对象的属性。因为改变的是全局,所以需要谨…

log4j(日志的配置)

日志一般配置在resources的config下面的,并且Util当中的initLogRecord中的initLog()方法就是加载这个log4j.properties的. 首先先看log4j.properties的配置文件 log4j.rootLoggerdebug, stdout, Rlog4j.appender.stdoutorg.apache.log4j.Co…

数据可视化:解锁企业经营的智慧之道

在现代企业管理中,数据可视化已经成为了一项重要的工具。它不仅仅是简单地展示数据,更是提供了深入理解数据、做出更明智决策的方法。作为一名可视化设计从业人员,我经手过一些企业自用的数据可视化项目,今天就来和大家聊聊数据可…

同一个kmz数据同样的底图在QGIS上显示位置正常, 在Mars3d中显示就偏移了一些

问题: 1.同一个kmz数据同样的底图在QGIS上显示位置正常, 在网页中显示就偏移了一些 在qgis上的显示效果,和在mars3d的显示效果:数据明显存在偏移。 解决步骤: 1.查看了kmz数据,里面实际是tif图片数据,估…

消息队列kafka详解:Kafka重要知识点+面试题大全

重要面试知识点 Kafka 消费端确保一个 Partition 在一个消费者组内只能被一个消费者消费。这句话改怎么理解呢? 在同一个消费者组内,一个 Partition 只能被一个消费者消费。 在同一个消费者组内,所有消费者组合起来必定可以消费一个 Topic 下…

gitee对接使用

1.创建一个文件夹 2.进入Gitee接受对方项目编辑 3.打开终端初始化一开始创建的文件夹 git init 3.1打开终端 3.2输入git.init 4.克隆对方的项目 4.1进入Gitee复制对方项目的路径 4.2在编辑器终端内克隆对方项目 git clone 网址 如此你的编辑器就会出现对方的项目 …

docker 资源控制

Docker的资源控制 对容器使用宿主机的资源进行限制,如cpu,内存,磁盘I/O Docker使用linux自带的功能cgroup(control grouos)是linux内核系统提供的一种可以限制,记录,隔离进程组使用的物理资源 Docker借助这个机制&…

高性能和多级高可用,云原生数据库 GaiaDB 架构设计解析

1 云原生数据库和 GaiaDB 目前,云原生数据库已经被各行各业大规模投入到实际生产中,最终的目标都是「单机 分布式一体化」。但在演进路线上,当前主要有两个略有不同的路径。 一种是各大公有云厂商选择的优先保证上云兼容性的路线。它基于存…

电商系统架构演进

聊聊电商系统架构演进 具体以电子商务网站为例, 展示web应用的架构演变过程。 1.0时代 这个时候是一个web项目里包含了所有的模块,一个数据库里包含了所需要的所有表,这时候网站访问量增加时,首先遇到瓶颈的是应用服务器连接数&a…