繁体   English   中英

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

[英]MQTT on Azure IOT Hub : Error initializing MQTT connection:Not authorized to connect

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

如果您将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;

您将拥有一个基本的Java客户端,可以通过MQTT与IoT中心进行通信。

正如@DominicBetts所说,在使用IoTHub SDK for Java时,您无需创建SAS令牌。 有关IoTHub安全性的更多说明,请参见正式文档Azure IoT Hub developer guide

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM