我使用下面的代码在openfire上更改登录用户的密码,但这会返回nullpointer异常。
我已从以下链接中获取参考:
http://xmpp.org/extensions/xep-0077.html#usecases-changepw
if(use_ssl){
final SecureConnection sc = (SecureConnection) Connector.open("ssl://" + this.server + ":" + this.port+this.connectionMask, Connector.READ_WRITE);
is = sc.openInputStream();
os = sc.openOutputStream();
this.reader = new XmlReader(is);
this.writer = new XmlWriter(os);
try{
String stream="<stream:stream to='204.93.197.136' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0'>";
os.write(stream.getBytes());
os.flush();
do {
reader.next();
} while ((reader.getType() != XmlReader.END_TAG) || (!reader.getName().equals("stream:features")));
for (Enumeration enu = listeners.elements(); enu.hasMoreElements();) {
XmppListener xl = (XmppListener) enu.nextElement();
}
String sendRequest="<iq type='set' to='204.93.197.136' id='change1'><query xmlns='jabber:iq:register'><username>"+Jxa.loginUserName+"</username><password>"+newPassword+"</password></query></iq>";
os.write(sendRequest.getBytes());
os.flush();
int count=0;
do {
reader.next();
if(reader.getName().equals("error")){
count++;
}
} while ((reader.getType() != XmlReader.END_TAG) || (!reader.getName().equals("iq")));
for (Enumeration enu = listeners.elements(); enu.hasMoreElements();) {
XmppListener xl = (XmppListener) enu.nextElement();
}
}catch (Exception e) {
System.out.println(e);
UiApplication.getUiApplication().invokeLater(new Runnable(){
public void run(){
Dialog.alert("Record Not Updated");
}
});
}
}
答案 0 :(得分:0)
但这会返回nullpointer异常。
您需要找出导致NullPointerException的原因。单步执行调试器中的代码可能会显示哪条线路正在触发异常。然后,您可以在示例代码中查找不应为null的空值。下一个挑战是除了'null'
之外,还要弄清楚预期的价值或者,您可以在不运行示例代码的情况下推断示例代码中发生的事情。这通常可以让您更好地了解它正在做什么,但可能非常耗时。