Asmack/Openfire 401 错误

发布于 2024-12-11 07:59:52 字数 880 浏览 6 评论 0原文

我正在尝试使用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) 错误。我该如何修复它?

I'm trying to write a simple XMPP application on Android using asmack, but I've encountered a problem that I cannot login to several jabber servers. For example, I can't login into my test Openfire server, although the code works fine with jabber.org accounts.

Login code:

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

As I said, it works with jabber.org, but Openfire returns not-authorized(401) error. How can I fix it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

纵性 2024-12-18 07:59:52

我从未使用过 Openfire,但我确信某处有一个日志文件 - 你可以发布它吗?

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

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

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

I never used Openfire, but I'm sure there is a Logfile somewhere - can you post it?

IIRC in Android some security functions (not sure if for SSL or TLS) are not compatible to Smack or Asmack, maybe thats the problem. In this case there is a way to solve it by using an own Socket connection (instead of the included SSL functions of Smack) - To verify this you can port your (XMPP-relevant) code to PC and use the Standard Smack Library.

Another point is, that there are different Smack ports for Android. I personally use the Asmack port from the Beem-project (because the originally Asmack had some issues - but I can't remember which ones...)

But still...without more information I can only guess.

木落 2024-12-18 07:59:52

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

Are you sure that you have the same account and password on the OpenFire server? Try logging into your server using the same username and password with an existing XMPP client. Take Android out of the equation altogether and make sure you can log into both servers first.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文