【发布时间】:2019-09-24 00:19:07
【问题描述】:
我创建了一个 IoT 中心应用程序,并尝试通过 C# 控制台应用程序使用多个云到设备 (C2D) 消息将 JSON blob 发送到 Android 设备。
我将 JSON blob 拆分为多个字符串,长度为 64000,并在单独的 C2D 消息中发送每个块。我使用 64000 作为字符串的长度,因为字符串的长度等于字节大小(请参阅https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-messages-construct),并且我为额外的属性留了一些空间
每个块都存储为一个属性,如下所示:
var message = new Message();
message.MessageId = messageId;
message.Ack = DeliveryAcknowledgement.Full;
message.CreationTimeUtc = creationTime;
message.Properties.Add("type", "EXAMPLE_TYPE");
message.Properties.Add("example_data_key", chunk);
message.Properties.Add("checksum", checksum);
message.Properties.Add("page", pageNumber.ToString());
message.Properties.Add("page_total", chunks.Count.ToString());
消息已从我的控制台应用程序成功发送,但是当我在我的 Android 设备上(通过 MQTT 协议)收到消息时,在消息正文中找到了 example_data_key 属性中的大量数据,看起来进行 url 编码。
例如,":"3"," 将显示为 %22%3A%223%22%2C%22,但属性中的字符串已正确解码
有什么想法吗?
编辑:忘了提到这仅在我发送非常大的消息时才会发生(例如,长度为 64000 的字符串)。例如,如果我将字符串设置为 32000 长度,那么一切正常。
【问题讨论】:
标签: c# azure-iot-hub