Java Mqtt连接失败,出现异常';未授权连接(5)和#x27;安卓

Java Mqtt连接失败,出现异常';未授权连接(5)和#x27;安卓,java,android,mqtt,watson-iot,Java,Android,Mqtt,Watson Iot,嗨,我正试图用我刚注册的android设备连接到mqtt,但我一直收到错误消息 Not authorized to connect (5) 这是我的一些代码 client = new MqttAndroidClient(context, connectionURI, clientID); client.setCallback(callbacks); String username = IOT_DEVICE_USERNAME; c

嗨,我正试图用我刚注册的android设备连接到mqtt,但我一直收到错误消息

Not authorized to connect (5)
这是我的一些代码

        client = new MqttAndroidClient(context, connectionURI, clientID);
        client.setCallback(callbacks);

        String username = IOT_DEVICE_USERNAME;
        char[] password = this.getAuthorizationToken().toCharArray();

        MqttConnectOptions options = new MqttConnectOptions();
        options.setCleanSession(true);
        options.setUserName(username);
        options.setPassword(password);

        Log.d(TAG, "Connecting to server: " + connectionURI);
        try {
            // connect
            return client.connect(options, context, listener);
        } catch (MqttException e) {
            Log.e(TAG, "Exception caught while attempting to connect to server", e.getCause());
            throw e;
        }
其中,物联网设备\u用户名是字符串“使用令牌身份验证”connectionUri”tcp://.messaging.internetofthings.ibmcloud.com:8883“

另一个有趣的是,在这个错误之前,我得到了这个日志

Unregister alarmreceiver to MqttServiced:<"organisation">:<"DeviceType">:<"deviceId">
我发现了这个错误:

令牌身份验证失败(在数据库中找不到设备/网关):ClientID='d:4rxa4d:AndroidDevice:1c39476b8dd0'

您是否为AndroidDevice创建了设备类型,并在Watson IoT平台中向您的组织注册了ID 1c39476b8dd0


这显示了如何注册设备

问题已经解决。事实上,我将其用作中的客户端id,作为MqttAndroidClient对象构造函数的输入

String iotClientId = "d:"+ORG+":"+DEVICE_TYPE+":"+DEVICE_ID;
然而,由于我将Android设备注册为网关,因为它实际上连接到传感器所在的多个外围设备。为了解决这个问题,我将上面的行修改为

String iotClientId = "g:"+ORG+":"+DEVICE_TYPE+":"+DEVICE_ID;

嗨,迈克尔,如果你知道6个字符的组织,我会检查日志中的任何错误,这可能有助于解决你的问题。此外,你是否遵循任何食谱或教程?例如,此配方显示如何使用设备类型和ID设置客户端ID。例如,字符串iotClientId=“d:”+ORG+:“+device\u type+”:“+device\u ID@ValerieLampkin 4rxa4d是该组织。应该有一些其他类型的设备能够顺利连接,但android设备就是其中之一trouble@ValerieLampkin我现在指的是我会看看上面的食谱。如果你发现什么,请告诉我。谢谢。有趣的是,我已经在Watson IoT上注册了该设备。它没有找到设备吗?你推荐什么?也许删除设备并重新注册?我更新了问题,添加了错误的堆栈跟踪,如果这有助于理解发生了什么。嗨,Michael,我看到你发现它注册为网关而不是设备,现在已经相应地更新了连接信息。很高兴听到它正在工作。
String iotClientId = "g:"+ORG+":"+DEVICE_TYPE+":"+DEVICE_ID;