乐鑫技术交流
直播中

王银喜

7年用户 2247经验值
私信 关注
[问答]

如何从网络服务器读取连续的JSON数据流?

我有一个家庭自动化系统,它在网页上以 JSON 格式为十几个测量参数提供连续的数据流(每秒)。
我需要阅读它们并复制相应的变量。
所以全局三个步骤:
1. 登录到服务器(摘要式身份验证)-我认为已解决
2. 每秒从网页读取字符串 - 不知道如何做,也没有找到教程/示例
3. 解析 JSON 和提取数据(最简单的部分 I思考)

回帖(1)

石飞鹏

2024-3-27 18:05:10
一种实现方式是使用Python语言的requests和json模块。

第一步,登录到服务器。可以使用requests模块发送带有身份验证信息的POST请求:

```
import requests
import hashlib

url = 'http://your_server/login'
username = 'your_username'
password = 'your_password'

# 计算密码的摘要值(使用SHA256算法)
digest_password = hashlib.sha256(password.encode()).hexdigest()

# 组装请求体
data = {
    'username': username,
    'password': digest_password
}

# 发送POST请求
response = requests.post(url, data=data)

# 检查响应状态码,如果登录失败可能需要抛出异常
if response.status_code != 200:
    raise Exception('Failed to login: ' + response.text)

# 保存登录后的会话
session = requests.Session()
session.cookies.update(response.cookies)
```

第二步,每秒从网页读取字符串。可以使用requests模块发送带有会话信息的GET请求:

```
import json
import time

url = 'http://your_server/data_stream'

while True:
    # 发送GET请求
    response = session.get(url)

    # 解析JSON数据
    data = json.loads(response.text)

    # 提取需要的数据(假设需要temperature和humidity两个变量)
    temperature = data['temperature']
    humidity = data['humidity']

    # 处理数据...
    print('temperature:', temperature, 'humidity:', humidity)

    # 等待1秒
    time.sleep(1)
```

以上代码的两个关键点是使用requests.Session保存登录后的会话信息,以及使用json模块解析JSON数据。其他详细的代码实现可能需要根据实际情况进行调整。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分