TuyaOS
HTTP 协议

这个项目将会介绍 http 协议和使用相关接口进行 postget 等操作。

  • HTTP 简介

HTTP(HyperText Transfer Protocol),超文本传输协议,是一个客户端和服务器端请求和应答的标准(通常采用 TCP 协议)。

  • HTTPS 简介

HTTPS 基于 HTTP 协议,通过 SSLTLS 提供加密处理数据、验证对方身份以及数据完整性保护。

因为 HTTP 协议传数数据时使用的是明文,非常不安全,所以 tuyaos 采用 tls 协议对 TCP 传输数据的时候进行了加密。

在内部开发中,涂鸦设备与涂鸦服务器之间的交互,大多使用的是 atop 接口。atop 接口可以理解为涂鸦设备与涂鸦云端的一种俗称约定,例如使用 tuya.xxx.weather.get API 接口就可以访问涂鸦服务器,获取当前的天气状态。

但是直接暴露接口名称,对涂鸦服务器来说非常不安全,所以此例程中,都是设备通过域名去访问。如果开发者有相关需求需要 atop 接口,可以直接联系产品经理。

  • HTTP 请求消息

HTTP 请求消息的格式如下:

知识点学习-http 请求消息.png

tuyaos 内部已经替我们做了一些处理,外部提供了 HTTP 接口,我们只需要重点关注请求的方式、域名、请求体中的数据即可。

  • HTTP 响应消息

响应消息就是服务器响应给客户端的消息内容,也叫作响应报文。响应消息的格式如下:

知识点学习-http 响应消息.png

此例程只介绍设备(客服端)的使用,服务器端请开发者自行配置。

  • 请求方式

HTTP 请求方式,用来表明请求 URL 指定的资源不同的操作方式。HTTP1.1 中共定义了8种不同的请求方式。但此例程只介绍最常用的 postget 请求方式。 tuyaos 支持带参数请求。例:iot_httpc_raw_post("www.baidu.com/index.html?demo=123",strlen("index.html?demo=123",p_http_hander);

  • 请求方式 post

post,向服务器提交资源(例如提交表单或上传文件)。数据被包含在请求体中提交给服务器。

使用iot_httpc_raw_post或者 httpc_raw_post 函数发起 post 请求。函数的形参介绍如下:

知识点学习-iot_httpc_raw_post 形参介绍.png

使用iot_httpc_raw_write_content或者httpc_raw_write_content函数填充 post 数据。函数的形参介绍如下:

知识点学习-iot_httpc_raw_write_content 参数介绍.png

post 完数据之后记得要使用 iot_httpc_raw_close 或者 httpc_raw_close 函数关闭请求,因为 HTTP 是无连接的,发完数据就要关闭。

  • 请求方式 get

get,发送请求来获得服务器上的资源。

使用 iot_httpc_raw_get 或者 httpc_raw_get 函数发起 get 请求。函数的形参介绍如下:

知识点学习-iot_httpc_raw_write_content 参数介绍.png

使用 iot_httpc_raw_read_resp_header 或者 httpc_raw_read_resp_header函数获取响应报文信息。响应报文信息中需要重点关注状态码(响应码),完整的响应码可参考MDN官方文档。 函数的形参介绍如下:

知识点学习-httpc_raw_read_resp_header 形参介绍.png

使用 iot_httpc_raw_read_content 或者 httpc_raw_read_content 获取数据。函数的形参介绍如下:

知识点学习-iot_httpc_raw_read_content 形参介绍 12138.png

get 完数据之后记得要使用 iot_httpc_raw_close 或者 httpc_raw_close 函数关闭请求,因为 HTTP 是无连接的,发完数据就要关闭。

流程介绍

相关函数目录: software/TuyaOS/include/components/svc_api_iot/include/tuya_iot_internal_api.h

知识点学习-http 流程介绍 12139.png