单元四

第13课 利用HTTP获取数据

任务场景:利用HTTP获取数据
任务场景:利用HTTP获取数据

一、任务目标

用 HTTP GET 向网上取数,串口先打出原文,再解析出时间和值。

二、我们要学什么

  • 学习要点:WiFi 与协议|HTTP GET 取回并打印数据
  • 本课过关:能完成:说出 HTTP GET 就是发出请求、收回文本;载入体验程序,指出输入是 MixIO 的 getData 接口、输出是串口原文,运行后能看到返回文本;再运行完整程序,指出同一请求会再 json.loads,循环打印每条的时间和值。
  • 示例对齐:体验题对应 「教育部教学指南改进版/八年级/9-1-2 利用HTTP获取互联网中的数据」;完整代码对应 「教育部教学指南改进版/八年级/9-4 利用HTTP获取互联网中的数据」。

三、本节要点

前课近场读卡、开门、蓝牙,本课改走 WiFi 与协议:先连上 WiFi,再用 HTTP GET 向 MixIO 的 getData 取回数据。重难点是分清两套程序——体验只把返回原文打印到串口;完整程序同一请求后再 json.loads,循环打印每条的时间和值。MixIO 取数是例子。要点对齐「WiFi 与协议|HTTP GET 取回并打印数据」。

1读场景明确真实任务
2对要点WiFi 与协议|HTTP GET 取回并打印数据
3载入运行官方积木/代码

四、解题思路

任务:用两套程序认识 WiFi 与协议里的 HTTP GET——都是先连 WiFi,再向 MixIO getData 发出请求;体验程序把返回原文打印到串口,完整程序再 json.loads,循环打印时间和值。

本课主要用到:WiFi 连网、HTTP GET、串口打印(完整程序另有 json.loads)。

  1. 1明确任务「利用HTTP获取数据」:连上 WiFi,用 GET 取回文本。
  2. 2先连接 WiFi,让后续请求能发出去。
  3. 3用 urequests.get 访问 MixIO 的 getData 接口(主题「时间」、条数 10)。
  4. 4取出 response.text,打印到串口,先看返回原文。
  5. 5体验程序到此结束;完整程序再 json.loads,循环打印每条的时间和值。

流程示意(可对照左侧文字)

HTTP GET:发出请求收回文本先连接 WiFiGET MixIO getData把返回原文打印到串口完整再解析时间和值

五、图形块功能讲解

下面只列出本课首次出现的 Mixly 图形块(真积木截图)。已在前面课讲过的不再重复;先认新块,再点「载入」对照拖搭。

图形块分类作用本课用法
发起请求
网络向指定网址发起 HTTP 请求并获取结果。本课编程练习中首次使用,载入后可在工具箱对照。
获取响应属性
网络从请求结果中取出响应内容、状态码等属性。本课编程练习中首次使用,载入后可在工具箱对照。
JSON 转字典
字典解析 JSON 为字典。本课编程练习中首次使用,载入后可在工具箱对照。
取字典值
字典按键读取值。本课编程练习中首次使用,载入后可在工具箱对照。
打印多项
文本一次打印多个值。本课编程练习中首次使用,载入后可在工具箱对照。

六、知识点讲解

HTTP GET是发出请求、收回文本:客户端向网址要数据,服务器把结果作为文本送回来。前课走近场,本课改连网取数。本课用 MixIO 的 getData 作例子。体验程序把 response.text 原文打印到串口;完整程序再 json.loads,按 data 列表循环打印每条的时间和值。

先弄清:HTTP GET 收回的是文本,完整程序才把文本解析成时间和值;再进编程练习对照现象。

七、编程练习

点「载入」打开 MixVM(board=sant_design)。默认图形化积木;起步程序与积木优先来自 MixGo Sant 官方示例「教育部教学指南改进版/八年级」。在 Mixly 工具栏点「运行 / 停止」,「检查」做关键字核对。请先读本页「四、解题思路」与「五、图形块功能讲解」,再点载入。

官方示例:9-1-2 利用HTTP获取互联网中的数据.mix。载入后运行。

八、课堂练习

先完成两道正误判断,再做其余题目;选出后点「检查」。

  1. 判断:体验程序连上 WiFi 后用 HTTP GET 取 MixIO 数据,把返回原文打印到串口。

  2. 判断:完整程序和体验程序一样,只打印返回原文,没有 json.loads。

  3. 本课说的 HTTP GET 指的是?

  4. 体验程序和完整程序的主要差别是?

  5. 运行完整程序后,串口应看到?

九、本节小结

前课走近场,本课认识WiFi 与协议:连上 WiFi,用 HTTP GET 取回数据。体验程序把 MixIO getData 的返回原文打印到串口;完整程序再 json.loads,循环打印每条的时间和值。串口先出现原文,完整程序还会出现「时间」「值」。