Azure IoT集线器MQTT故障(无SDK)
我正在尝试使用Microsoft Azure IOT Hub(MQTT)将我的java客户端设备连接到IOT Hub(无SDK)。我根据需要使用TTL创建了设备和SAS。我正在使用paho客户端连接到物联网中心。我发现以下错误。我从物联网中心工具创建的SAS令牌,有效期为5小时。 未授权连接(5) 位于org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:28) 位于org.eclipse.paho.client.mqttv3.internal.ClientState.notifyReceivedAck(ClientState.java:1040) 位于org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:151) 在java.lang.Thread.run(未知源) 下面是我正在尝试的代码Azure IoT集线器MQTT故障(无SDK),mqtt,azure-iot-hub,Mqtt,Azure Iot Hub,我正在尝试使用Microsoft Azure IOT Hub(MQTT)将我的java客户端设备连接到IOT Hub(无SDK)。我根据需要使用TTL创建了设备和SAS。我正在使用paho客户端连接到物联网中心。我发现以下错误。我从物联网中心工具创建的SAS令牌,有效期为5小时。 未授权连接(5) 位于org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:2
String deviceId = "mqqdirectdevice1";
String brokerUri = "ssl://xxxxx:8883";
String clientId = deviceId;
System.out.println( "Connecting to " + brokerUri +" as "+clientId);
MqttAsyncClient client = null;
try {
String sasToken="SharedAccessSignature sr=xxxxxxx.azure-devices.net%2Fdevices%2Fmqqdirectdevice1&sig=iJ3jacTNMdyyhIrQueBN5X6uEqURYCKfa5Z63ePKDRs%3D&se=1600335545";
client = new MqttAsyncClient( brokerUri, clientId,new MemoryPersistence());
if ( client != null ) {
MqttConnectOptions options = new MqttConnectOptions();
client.setCallback( new AzureCallback() );
options.setUserName("xxxxxx.net/mqqdirectdevice1?api-version=2018-06-30");
options.setPassword(sasToken.toCharArray());
// options.setPassword(sasToken.toCharArray());
options.setKeepAliveInterval(230);
options.setCleanSession(false);
options.setMqttVersion(4);
IMqttToken token=client.connect( options );
token.waitForCompletion(60 * 1000);
System.out.println("Sent MQTT CONNECT packet was acknowledged");
if ( client.isConnected() ) {
System.out.println( "Success!" );
} else {
System.out.println( "Could not connect to Azure IoT hub, timed-out" );
}
}
} catch ( MqttException) {
//client.getDebug().dumpBaseDebug();
e.printStackTrace();
} finally {
if ( client != null ) {
try {
client.disconnect();
} catch ( MqttException ignore ) {}
}
}
在您的示例中,您使用以下用户名:
xxxxxx.net/mqqdirectdevice1?api-version=2018-06-30
格式略有不同,您当前缺少问号前的正斜杠。正确的格式是:
xxxxxx.net/mqqdirectdevice1/?api-version=2018-06-30
我对它进行了测试,但无法使用错误格式的用户名建立MQTT连接。太好了,很高兴它能工作。请考虑将答案标记为“接受”,以便为其他人容易找到。它是昨天直到昨天为止的工作文件,但是今天我在Org .Eclipse .PAHO。java. I.EfExtExchange中遇到以下错误连接(32109)-cliv.MQTV3..No.CorsSlie.Run(CorsSelp:java:197),在java .Lang.Tr.Run(线程.java:748)由org.eclipse.paho.client.mqttv3.internal.wire.MqttInputStream.readMqttWireMessage(MqttInputStream.java:92)org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:137)处的java.io.DataInputStream.readByte(DataInputStream.java:267)处的java.io.eofeexception引起。。。1如果您能提供更多帮助,我们将不胜感激。您能就此单独提出一个问题吗?看起来这个错误与这个问题无关。(顺便说一句,当两个应用程序使用相同的客户端id连接时,可能会发生此错误)