什么是 HTTP
HTTP(HyperText Transfer Protocol,超文本传输协议) 是互联网上使用最广泛的“请求-响应”协议:客户端(你的模组、浏览器、手机 App)发一个请求,服务器返回一个响应。网页浏览、天气查询、设备上报数据,绝大多数都是通过 HTTP 完成的。
HTTP 的特点是文本协议——请求和响应都是人能读懂的文本行,格式固定、易于调试。它本身不加密,明文传输;需要加密时使用 HTTPS(HTTP + TLS/SSL,见 HTTPS 页面)。
请求(Request)
一次 HTTP 请求由三部分组成:
请求行:方法 + 空格 + URL + 空格 + 协议版本,例如:
text
GET /index.html HTTP/1.1请求头(Headers):每行一个“键: 值”,告诉服务器额外信息,例如:
text
Host: www.gov.cn
User-Agent: Ai-M62
Content-Type: application/json请求体(Body):可选。GET 通常没有请求体,POST/PUT 用它携带要提交的数据(如表单、JSON)。
响应(Response)
服务器返回的响应同样由三部分组成:
状态行:协议版本 + 空格 + 状态码 + 空格 + 原因短语,例如:
text
HTTP/1.1 200 OK响应头:格式与请求头相同,例如 Content-Type(内容类型)、Content-Length(内容长度)。
响应体:服务器返回的实际内容(网页 HTML、JSON 数据、图片等)。
常用方法
| 方法 | 含义 | 典型用途 |
|---|---|---|
| GET | 获取资源 | 请求网页、查询天气、读取设备状态;参数放在 URL 里 |
| POST | 提交数据 | 新增资源:登录、上报数据、发布消息;数据放请求体 |
| PUT | 整体更新 | 把某个资源整体替换成请求体里的内容 |
| DELETE | 删除资源 | 删除服务器上的指定资源 |
常见状态码
| 状态码 | 含义 | 说明 |
|---|---|---|
| 200 | OK | 请求成功 |
| 201 | Created | 创建成功(常见于 POST) |
| 301/302 | 重定向 | 资源换地址了,客户端应跟随跳转 |
| 400 | Bad Request | 请求格式错误 |
| 401 | Unauthorized | 未认证/未登录 |
| 403 | Forbidden | 没有权限 |
| 404 | Not Found | 资源不存在 |
| 500 | Internal Server Error | 服务器内部错误 |
与 SDK 例程的关系
博流 SDK 的 examples/wifi/sta/wifi_http 例程演示了在模组上发起 HTTP 请求:烧录后先连接 Wi-Fi,再在串口 shell 输入 wifi_http_test <url>,例程用 https_client 组件发送请求,并通过回调(response_cb)接收和打印服务器返回的内容。
- 例程内部先把域名解析成 IP(
gethostbyname),再建立 TCP 连接(80 端口)、发送 HTTP 文本、按回调接收响应; - 本页四个方法页(GET/POST/PUT/DELETE)都以该例程为基础,完整代码与 API 说明见对应页面;
- HTTPS(加密版 HTTP)见 HTTPS 页面,对应 SDK 例程
examples/wifi/sta/wifi_https。
小结
- HTTP 是文本格式的请求-响应协议:客户端发“方法 + URL + 头 + 体”,服务器回“状态码 + 头 + 体”;
- GET 取数据、POST 提交数据、PUT 整体更新、DELETE 删除;
- 状态码 2xx 成功、3xx 重定向、4xx 客户端错误、5xx 服务器错误;
- 在模组上跑 HTTP 前,先确保设备已连上 Wi-Fi(
wifi_sta_connect <ssid> <password>)。
遇到问题?
如有其他问题,请到统一的提问与讨论区:Ai-Thinker Discussions

