1

asmackを使用してAndroidで単純なXMPPアプリケーションを作成しようとしていますが、複数のjabberサーバーにログインできないという問題が発生しました。たとえば、コードはjabber.orgアカウントで正常に機能しますが、テスト用のOpenfireサーバーにログインできません。

ログインコード:

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)エラーを返します。どうすれば修正できますか?

4

2 に答える 2

0

Openfireを使用したことはありませんが、どこかにログファイルがあると確信しています。投稿していただけますか?

AndroidのIIRCの一部のセキュリティ機能(SSLまたはTLSの場合は不明)は、SmackまたはAsmackと互換性がありません。おそらくそれが問題です。この場合、(Smackに含まれているSSL関数の代わりに)独自のソケット接続を使用して問題を解決する方法があります-これを確認するには、(XMPP関連の)コードをPCに移植し、標準Smackライブラリを使用できます。

もう1つのポイントは、AndroidにはさまざまなSmackポートがあるということです。私は個人的にBeemプロジェクトのAsmackポートを使用しています(元々Asmackにいくつかの問題があったためですが、どれがどれか思い出せません...)

しかし、それでも...それ以上の情報がなければ、私は推測することしかできません。

于 2011-10-21T11:58:34.003 に答える
0

OpenFire サーバーで同じアカウントとパスワードを使用していますか? 既存の XMPP クライアントと同じユーザー名とパスワードを使用してサーバーにログインしてみてください。Android を完全に方程式から外し、最初に両方のサーバーにログインできることを確認してください。

于 2011-10-24T14:50:53.043 に答える