0

我正在使用下面的代码在 openfire 上更改登录用户的密码,但这会返回空指针异常。

我已从以下链接中获取参考:

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");
                    }
                });
            }
        }
4

1 回答 1

0

但这会返回空指针异常。

您需要找出导致 NullPointerException 的原因。在调试器中单步执行代码可能会揭示哪一行遇到了异常。然后,您可以在示例代码中查找不应为空的空值。下一个挑战是找出除了“null”之外的预期值

或者,您可以推断示例代码中发生的事情,而无需运行它。这通常可以让您更好地了解它在做什么,但可能会很耗时。

于 2012-09-18T04:44:32.740 回答