我正在尝试使用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)
最佳答案
如果您将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中心进行通信。
关于java - Azure IOT集线器上的MQTT:初始化MQTT连接时出错:未授权连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37360627/