Asmack / Openfire 401 ошибка - PullRequest
       14

Asmack / Openfire 401 ошибка

1 голос
/ 21 октября 2011

Я пытаюсь написать простое приложение XMPP на Android, используя asmack, но я столкнулся с проблемой, что не могу войти на несколько серверов 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 голосов
/ 24 октября 2011

Вы уверены, что у вас одна и та же учетная запись и пароль на сервере OpenFire? Попробуйте войти на свой сервер, используя то же имя пользователя и пароль, что и существующий клиент XMPP. Вычеркните Android из уравнения и убедитесь, что вы можете сначала войти на оба сервера.

0 голосов
/ 21 октября 2011

Я никогда не использовал Openfire, но я уверен, что где-то есть файл журнала - вы можете опубликовать его?

IIRC в Android Некоторые функции безопасности (не уверен, что для SSL или TLS) не совместимы с Smackили Asmack, может быть, в этом проблема.В этом случае есть способ решить эту проблему, используя собственное соединение Socket (вместо включенных функций SSL Smack). Чтобы проверить это, вы можете перенести свой (соответствующий XMPP) код на ПК и использовать стандартную библиотеку Smack.

Другой момент заключается в том, что для Android существуют разные порты Smack.Я лично использую порт Asmack из проекта Beem (потому что изначально у Asmack были некоторые проблемы - но я не могу вспомнить, какие из них ...)

Но все же ... без дополнительной информации я могу только догадываться.

...