gpt4 book ai didi

azure - 为什么 IoT 中心消息在存储 JSON blob 中未正确解码?

转载 作者:行者123 更新时间:2023-12-03 01:38:13 26 4
gpt4 key购买 nike

我正在使用提供的函数通过 Azure Sphere 开发套件发送字符串:

AzureIoT_SendMessage(“来自示例应用程序的问候”)

消息发送到 IoT 中心,然后使用 JSON 编码路由到存储 blob。如果我查看 blob 存储,我会得到以下信息:

{"EnqueuedTimeUtc":"2019-05-22T12:33:42.2320000Z","Properties":{},"SystemProperties":{"connectionDeviceId":"fbea*****************6d**********************9c0","connectionAuthMethod":"{\"scope\":\"device\",\"type\":\"x509Certificate\",\"issuer\":\"external\",\"acceptingIpFilterRule\":null}","connectionDeviceGenerationId":"63************22","enqueuedTime":"2019-05-22T12:33:42.2320000Z"},"Body":"SGVsbG8gZnJvbSBzYW1wbGUgQXBw"}

字段“body”根本不显示发送的字符串(“来自示例应用程序的Hello”),但显示“SGVsbG8gZnJvbSBzYW1wbGUgQXBw”。为什么会发生这种情况?我该如何解决它?

我发现,如果我将存储格式设置为 AVRO(而不是 JSON),则字符串会正确呈现,但消息会变成(字面上的)blob,并且不能在 powerBI 等流服务中使用(例如)。然而,可以在 blob 中找到该消息以及其他一些乱七八糟的东西(请参见下图和默认字符串消息)

enter image description here

最佳答案

请参阅 Microsoft 的 IoT 中心消息路由文档 - 特别是 Azure Storage部分。它说“使用 JSON 编码时,必须在消息系统属性中将 contentType 设置为 application/json,将 contentEncoding 设置为 UTF-8。这两个值都不区分大小写。如果未设置内容编码,则 IoT 中心将以 Base 64 编码格式写入消息。”

This blog post进一步扩展该主题,解释内容类型和编码需要设置为特定 header 。

设置标题:

If you are using the Azure IoT Device SDKs, it is pretty straightforward to set the message headers to the required properties. If you are using a third-party protocol library, you can use this table to see how the headers manifest in each of the protocols that IoT Hub supports​:

Content headers table

关于azure - 为什么 IoT 中心消息在存储 JSON blob 中未正确解码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56257276/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com