首页 文章

Asmack / Openfire 401错误

提问于
浏览
1

我正在尝试使用asmack在Android上编写一个简单的XMPP应用程序,但我遇到了一个问题,我无法登录到几个jabber服务器 . 例如,我无法登录我的测试Openfire服务器,尽管代码可以正常使用jabber.org帐户 .

登录代码:

public void login() throws XMPPException
{
    if (connection != null && connection.isConnected())
    {
        try 
        {
            Random generator = new Random();
            int resource_int = generator.nextInt();
            connection.login(USERNAME, PASSWORD, 
                             "Smack_" + Integer.toString(resource_int));
        } 
        catch (XMPPException e) 
        {
            e.printStackTrace();
            connection.disconnect();
            setConnection(null);
            throw e;
        }
        Roster.setDefaultSubscriptionMode(Roster.SubscriptionMode.accept_all);
    }
}

正如我所说,它适用于jabber.org,但Openfire返回 not-authorized(401) 错误 . 我该如何解决?

2 回答

  • 0

    我从未使用过Openfire,但我确定某处有一个Logfile - 你可以发布它吗?

    Android中的IIRC一些安全功能(不确定是否为SSL或TLS)与Smack或Asmack不兼容,也许这就是问题所在 . 在这种情况下,有一种方法可以通过使用自己的Socket连接(而不是Smack包含的SSL函数)来解决它 - 为了验证这一点,您可以将(XMPP相关的)代码移植到PC并使用标准Smack库 .

    另一点是,Android有不同的Smack端口 . 我个人使用Beem项目的Asmack端口(因为最初的Asmack有一些问题 - 但我不记得哪些......)

    但仍然......没有更多信息,我只能猜测 .

  • 0

    您确定在OpenFire服务器上拥有相同的帐户和密码吗?尝试使用与现有XMPP客户端相同的用户名和密码登录服务器 . 将Android完全排除在外,确保您可以先登录两台服务器 .

相关问题