1

我正在尝试使用 Microsoft Azure IOT Hub 来演示将我的设备连接到 IOT Hub 并使用 mqtt 协议发送消息。我有一个帐户并根据需要创建了带有 TTL 的设备和 SAS。我正在使用 microsoft azure 提供的 java 客户端 SDK 进行连接,但我的连接未经授权。我已按照以下 URL 中给出的所有步骤进行操作: https ://azure.microsoft.com/en-us/documentation/articles/iot-hub-mqtt-support/ 请在这方面帮助我。我的日志如下:

日志:

MqttIotHubConnection.open() connectionOptions=
============== Connection options ==============
CleanSession : false
SocketFactory : null
MqttVersion : 4
KeepAliveInterval : 20
ConTimeout : 30
UserName : PCSIOTHub.azure-devices.net/MQ...
SSLProperties : null
WillDestination : null


Exception in thread "main" java.io.IOException: Error initializing MQTT connection:Not authorized to connect
at com.microsoft.azure.iothub.transport.mqtt.MqttIotHubConnection.open(MqttIotHubConnection.java:142)
at com.microsoft.azure.iothub.transport.mqtt.MqttTransport.open(MqttTransport.java:83)
at com.microsoft.azure.iothub.DeviceClient.open(DeviceClient.java:163)
at samples.com.microsoft.azure.iothub.SendReceive.main(SendReceive.java:210)
4

2 回答 2

1

正如@DominicBetts 所说,使用 IoTHub SDK for Java 时不需要创建 SAS 令牌。IoTHub安全性的更多解释,请看官方文档Azure IoT Hub developer guide

作为示例的参考,您可以参考 GitHub 上的示例以了解如何在 Java 的不同协议中发送消息。

于 2016-05-23T09:11:32.670 回答
1

如果您将 Microsoft Java 客户端用于 IoT 中心,则无需自己创建 SAS 令牌,SDK 会为您完成。

如果您按照此处的示例https://azure.microsoft.com/en-us/documentation/articles/iot-hub-java-java-getstarted/#create-a-simulated-device-app,您只需要做的是替换:

private static IotHubClientProtocol protocol = IotHubClientProtocol.AMQPS;

和:

private static IotHubClientProtocol protocol = IotHubClientProtocol.MQTT;

您将拥有一个可以通过 MQTT 与 IoT Hub 通信的基本 Java 客户端。

于 2016-05-23T05:59:05.213 回答