我正在尝试学习Azure IoT中心,但是无法使用Postman将数据发送到IoT中心。我做了以下事情:
我的请求如下:
POST https://myhub.azure-devices.net/devices/MyDevice/messages/events?api-version=2020-03-13
我添加了授权标头,其值是:SharedAccessSignature = SharedAccessSignature sr = myhub.azure-devices.net%2Fdevices%2FMyDevice&sig = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
键是设备页面“主键”字段中复制的文本。
内容类型设置为application / json。但是身体目前是空的。
我收到以下答复:
“消息”:“ ErrorCode:ServerError; InternalServerError”,
注意:集线器和设备名称与此处所述的名称不同。
您需要基于主键来计算auth标头,而不仅仅是将其放入标头中。有关如何执行此操作的示例,请参见here,例如,使用CLI az iot hub generate-sas-token
[为此,我们有3个阶段,1)从Visual Studio Code生成SAS密钥,请参见下图(或者从CLI请参见由silent发布的答案)2)使用Postman 3)通过VS代码进行监视
步骤: VS代码
1)安装用于Azure IoT的VS Code扩展工具并按照屏幕上的说明连接IoT中心
2)您可以在VS Code Explorer中查看设备列表。现在,右键单击设备(在门户中创建),然后选择``为设备生成SAS令牌'',以24小时为单位给出时间,然后按Enter键。从输出窗口完整复制整个SAS密钥。示例如下所示。
SharedAccessSignaturesr = deviothub.azure-devices.net%2Fdevices%2FNewDevice&sig = H3II%2FCa5Km5V2pieP5Ti1SI%3D&se = 1590867649
步骤邮递员
1)我希望您已经在Azure IoT Hub REST API上访问了此文档。将所需的部分替换为IoT中心值。
POSThttps:// fully-qualified-iothubname.azure-devices.net / devices / {id} / messages / events?api-version = 2020-03-13
2)确保包括完全复制的SAS令牌,并在POST调用的标题部分中使用它
3)正文内容:这取决于您的用例。示例'raw'-JSON-> {“温度”:54}
**您会看到IoT中心接受的响应为'204 No Content']
Step监视遥测的简便方法
1)打开VS Code编辑器,右键单击特定设备并选择“开始监视内置事件”
2)从Postman发送另一个遥测,您可以看到消息到达IoT中心,并且在VS代码监视屏幕上可见。
快乐的Azure IoT学习