设备的本地API

2024-05-01 22:01:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试与一个energy meter交互,该energy meter承载着自己的本地API以获取数据。我对HTTP请求的了解还远远不够,这可能会对Stackoverflow提出很多要求,但是我如何在局域网上与这个设备交互呢

指示说明HTTP请求需要包括以下内容:

<headers>是数量可变的HTTP头;每个标题都在自己的行上。 标题中必须包含以下项目:

o内容类型:text/xml

o内容长度:xx,其中“xx”是文章正文中的字符数

o授权:基本XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,其中32个字符的基本身份验证凭证使用EAGLE Cloud ID作为用户名,EAGLE安装代码作为密码

最终,我将尝试执行以下列出的操作(获取仪表数据):

要从仪表中获取数据,必须首先查找其硬件地址。这可以通过本地API向EAGLE发出“device_list”命令来实现,该命令通过发送正文中包含以下文本的帖子来实现:

<Command>
 <Name>device_list</Name>
</Command>

有人能告诉我如何处理Python请求吗?下面的代码返回一个401,因为我知道它不包含body&;所需的标题信息

import requests

url = "http://10.100.100.27/"


print(requests.post(url).text)

这是一个示例,说明文档中的POST请求应该是什么样子。 enter image description here


1条回答
网友
1楼 · 发布于 2024-05-01 22:01:54

试试下面的方法

import requests

url = "http://10.100.100.27/cgi-bin/post_manager"

headers = {
  'Content-Type': 'text/xml',
  'Authorization' : 'Basic ' + '<your api key>',
}

command = 'device_list'
payload = '<Command><Name>{}</Name></Command>'.format(command)

print(requests.post(url, headers=headers, payload=payload).text)

相关问题 更多 >