2012-03-16 5 views
1

pubsubサービスが提供するアイテムを検出しようとしています。ターゲットサーバーにログインすると、正常に応答できます。しかし、私はbuを接続すると、それは悪い要求エラーを与えます。ログインなしのスマックサービスの検出で不正なリクエストが発生する(400)

これはコードです:

ConnectionConfiguration config = new ConnectionConfiguration(serverAddress, 5222); 
config.setServiceName(serviceName); 
connection = new XMPPConnection(config); 
connection.connect(); 
connection.login(userName, password); //!!!when I remove this line, bad request error is received 

ServiceDiscoveryManager discoManager = ServiceDiscoveryManager.getInstanceFor(connection); 
DiscoverItems items; 
try { 
items = discoManager.discoverItems("pubsubservice." + serverName); 
} catch (XMPPException e) { 
e.printStackTrace(); 
} 

ユーザーがログインしていないアイテムを発見する方法はありますが、接続が確立されていますか?

答えて

0

いいえ、スタンザをXMPP内の任意のJIDに送信するように認証する必要があります(そうしないと、自分のアドレスを知らないため、返信できなくなります)。

おそらく1つのオプションは匿名認証です。ほとんどのサーバーはそれをサポートしており、一時的なJIDを使用してサーバー上に一時的なアカウントを作成します。パスワードは不要で、ログインに要する時間は短くなります。

0

@MattJは正しかったので、anonログインを試してみることができます。それはあなたのところに行くことができます。

あなたの現在のリクエストはあなたにノードを取得します。その後、各ノードのアイテムを取得する必要があります。 PubsubManagerを使用する方が、pubsubにすべてアクセスして使用する便利な方法を提供するので、必要な情報を取得する方が簡単です。

getAffiliations()方法は、あなたが探しているもので、documentation hereをお試しください。

ところで、私はのpubsubの典型的なデフォルトのサービス名は、のpubsubないpubsubserviceであると考えています。少なくともこれはOpenfireの場合です。

関連する問題