Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MqttAndroidClient上订阅主题时发生NullPointerException_Android_Nullpointerexception_Mqtt - Fatal编程技术网

在MqttAndroidClient上订阅主题时发生NullPointerException

在MqttAndroidClient上订阅主题时发生NullPointerException,android,nullpointerexception,mqtt,Android,Nullpointerexception,Mqtt,我使用了PAHOEclipseRepo的Android服务jar。在客户端连接后订阅任何主题时,我都会遇到NUllPOinterException public void connect(View view) { MqttConnectOptions conOpt = new MqttConnectOptions(); String uri = "tcp://" + host + ":" + port; boolean cleanSession = true;

我使用了PAHOEclipseRepo的Android服务jar。在客户端连接后订阅任何主题时,我都会遇到NUllPOinterException

    public void connect(View view) {

    MqttConnectOptions conOpt = new MqttConnectOptions();

    String uri = "tcp://" + host + ":" + port;
    boolean cleanSession = true;
    // int timeout = 60 ;
    // int keepalive = 60 ;
    clientHandle = uri + clientId;

    MqttAndroidClient client;
    client = Connections.getInstance(this)
            .createClient(this, uri, clientId);

    Connection conn = new Connection(clientHandle, clientId, host, port,
            this, client, sslConnection);

    conOpt.setCleanSession(cleanSession);
    // conOpt.setConnectionTimeout(timeout);
    conOpt.setKeepAliveInterval(100);;

    MqttCallbackHandler callback = new MqttCallbackHandler(this,
            MainActivity.this, clientHandle);

    conn.addConnectionOptions(conOpt);
    Connections.getInstance(this).addConnection(conn);
    String[] topics = { "hello", "hi" };
    int qos = 0;
    try {
        IMqttToken t = client.connect(conOpt, null, new ActionListener(this,
                Action.CONNECT, uri, (String[]) null));
        //t.waitForCompletion(90);
        client.setCallback(callback);
        IMqttToken token = Connections
                .getInstance(this)
                .getConnection(clientHandle)
                .getClient()
                .subscribe(
                        "shatinTopic",
                        qos,
                        null,
                        new ActionListener(this, Action.SUBSCRIBE, uri,
                                topics));
        Log.d("SUBSCRIBE", token.getResponse().toString());
    } catch (MqttException e) {
        e.getCause();
    } catch (NullPointerException e) {
        e.getCause();
    } catch (Exception e) {
        e.getCause();
    }
}
错误:

11-09 15:17:24.702: E/AndroidRuntime(26671): Caused by: java.lang.NullPointerException
11-09 15:17:24.702: E/AndroidRuntime(26671): at      org.eclipse.paho.android.service.MqttAndroidClient.subscribe(MqttAndroidClient.java:788)
有人能帮个忙吗


提前谢谢

从泛美卫生组织开发人员邮件列表中得到了这个答案

因为connect是异步的,并且在调用subscribe时可能未建立连接。 如果使用IMqttToken connect(MqttConnectOptions选项、对象用户上下文、IMqttActionListener回调),则应等待完成或在IMqttActionListener.onSuccess中调用subscribe


虽然waitForCompletion给出了服务器超时错误,但订阅侦听器的onSuccess方法解决了这个问题。

从paho开发人员邮件列表中得到了这个答案

因为connect是异步的,并且在调用subscribe时可能未建立连接。 如果使用IMqttToken connect(MqttConnectOptions选项、对象用户上下文、IMqttActionListener回调),则应等待完成或在IMqttActionListener.onSuccess中调用subscribe

虽然waitForCompletion给出了服务器超时错误,但订阅侦听器的onSuccess方法解决了这个问题