首页 文章

Azure IOT Hub上的MQTT:初始化MQTT连接时出错:未授权连接

提问于
浏览
1

我正在尝试使用Microsoft Azure IOT Hub来演示将我的设备连接到IOT Hub并使用mqtt协议发送消息 . 我有一个帐户,并根据需要创建了设备和带有TTL的SAS . 我使用microsoft azure给出的java客户端SDK进行连接,但我的连接未经授权 . 我已按照以下网址中的所有步骤操作: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)

2 回答

  • 1

    如果您使用Microsoft Java客户端进行IoT Hub,则无需自行创建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客户端 .

  • 1

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

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

相关问题