解决Smack 提示“ Connection is not authenticated”

不点 阅读:735 2021-03-31 22:22:15 评论:0

在获取VCard(电子卡)信息的时候,我百度了一下,大部分的写法:如下:

/**  
     * 获取用户的vcard信息  
     * @param connection  
     * @param user  
     * @return  
     * @throws XMPPException  
     */   
    public static VCard getUserVCard(XMPPConnection connection, String user) throws XMPPException   
    {   
        VCard vcard = new VCard();   
        vcard.load(connection, user);   
           
        return vcard;   
    }  

我也是一名简单的“拿来主义者”,但是在按照方法填充完相关参数后提示如下错误:


我们从输出控制台了解到的信息:"连接不可靠"。

个人认为:在连接XMPP服务器,不仅仅是需要连接到XMPP服务,而是需要制定连接XMPP服务器的用户,结合上述的思考,我追加了一下两行代码:

 	connection.connect(); 
    	connection.login(user, password);

我根据网上和实际结果,调整后的代码如下:

/**  
     * 获取用户VCard信息  
     *   
     * @param connection  
     * @param user  
     * @return  
     * @throws XMPPException  
     */   
    public static VCard getUserVCard(XMPPConnection connection, String user,String password)   
            throws XMPPException {   
    	connection.connect(); 
    	connection.login(user, password); 
        VCard vcard = new VCard();   
        vcard.load(connection,  user+"@"+connection.getServiceName());   
        return vcard;   
    } 
  以上代码,是实际场合已经经过测试。


声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号