MQTT订阅在Android中不起作用

MQTT订阅在Android中不起作用,mqtt,paho,Mqtt,Paho,我试图使用Android服务从MQTT代理获取消息,但它不起作用 使用的库是Paho MQTT库,源代码如下所示 final MqttConnectOptions hIoTConnectionOptions = new MqttConnectOptions(); hIoTConnectionOptions.setMqttVersion(MqttConnectOptions.MQTT_VERSION_3_1); hIoTConnectionOptions.setAutomaticReconnect

我试图使用Android服务从MQTT代理获取消息,但它不起作用

使用的库是Paho MQTT库,源代码如下所示

final MqttConnectOptions hIoTConnectionOptions = new MqttConnectOptions();
hIoTConnectionOptions.setMqttVersion(MqttConnectOptions.MQTT_VERSION_3_1);
hIoTConnectionOptions.setAutomaticReconnect(true);
hIoTConnectionOptions.setCleanSession(false);`

try {
    hIoTAndroid = new MqttClient(ip_addr, clientID, new MemoryPersistence());
    IMqttToken conToken = hIoTAndroid.connectWithResult(hIoTConnectionOptions);
    hIoTAndroid.setCallback(MqttMessagingService.this);
    conToken.setActionCallback(new IMqttActionListener() {
        @Override
        public void onSuccess(IMqttToken asyncActionToken) {
            Log.d(TAG, "onSuccess");
            hIoTAndroid.setCallback(MqttMessagingService.this);
            try {
                IMqttToken subToken = hIoTAndroid.subscribeWithResponse(subtopic, 1);
                subToken.setActionCallback(new IMqttActionListener() {
                    @Override
                    public void onSuccess(IMqttToken asyncActionToken) {
                        Log.i(TAG, "Successfully subscribe to: " + subtopic);
                    }

                    @Override
                    public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
                        Log.d(TAG, "Couldn't subscribe to: " + subtopic);
                    }
                });
            } catch (MqttException | NullPointerException ex) {
                ex.printStackTrace();
            }
        }
        @Override
        public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
            Log.d(TAG, "Failed Connection");
        }
    });
} catch (MqttException ex) {
    Log.d(getClass().getCanonicalName(), "Connection attempt failed with reason code = " + ex.getReasonCode() + ":" + ex.getCause());
}


@Override
public void connectComplete(boolean reconnect, String serverURI) {
    Log.d(TAG, "Connection is established....");
}

@Override
public void connectionLost(Throwable cause) {
    Log.d(TAG, "The Connection was lost,,");
}

@Override
public void messageArrived(String topic, MqttMessage message) throws Exception {
    Log.i(TAG, new String(message.getPayload()));

}

@Override
public void deliveryComplete(IMqttDeliveryToken token) {
    Log.d(TAG, "Sent Message !");
}

publish和deliveryComplete函数工作正常,但subscribe函数和MessaGrarived不工作。为什么?

我对
org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.1有同样的问题,并且
subscribe
调用返回的令牌是
null
。感谢您的回复。此问题已解决。订阅服务器不工作,因为您尚未设置Mqtt回调客户端_subscribe.setCallback(This);