在MqttAndroidClient上订阅主题时发生NullPointerException
我使用了PAHOEclipseRepo的Android服务jar。在客户端连接后订阅任何主题时,我都会遇到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;
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方法解决了这个问题