您的位置:首页 > 移动开发 > Android开发

Android基于XMPP Smack openfire 开发的聊天室(六) 【加入房间、权限错误】

2016-01-25 13:01 671 查看

Android基于XMPP Smack openfire 开发的聊天室(六) 【加入房间、权限错误】

标签:
androidxmpp

2013-03-18 15:02
1507人阅读 评论(0)
收藏
举报

1,加入房间错误,通常一个就是密码错误。此时服务器会返回以下报文:

[html]
view plaincopy

<presence
from='darkcave@chat.shakespeare.lit'
to='hag66@shakespeare.lit/pda'
type='error'>
<x xmlns='http://jabber.org/protocol/muc'/>
<error type='auth'>
<not-authorized xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
</error>
</presence>

官网意思:如果房间要求密码验证而用户不能提供(或密码错误), 服务必须 MUST 拒绝访问这个房间并且通知该用户它们是未被授权的; 具体方法是返回一个类型为"error"的出席信息节并标明 <not-authorized/> 错误

解决如下:

[java]
view plaincopy

// 使用XMPPConnection创建一个MultiUserChat
MultiUserChat muc2 = new MultiUserChat(conn1,
"myroom@chat.shakespeare.lit/thirdwitch");

// 用户2使用密码加入新聊天室
// 聊天室服务将会决定要发送的历史记录数量
muc2.join("testbot2", "password");

报文如下:

[html]
view plaincopy

<presence
from='hag66@shakespeare.lit/pda'
to='myroom@chat.shakespeare.lit/thirdwitch'>
<x xmlns='http://jabber.org/protocol/muc'>
<password>password</password>
</x>
</presence>

2,权限错误:

这个没文本,当然如果你加入一个房间后,要注意的是,如果第一次加入别人的房间,没有被授予成员权限的时候,你仅仅是一个游客。除了说话。也不能检索聊天室成员的信息,仅可以获取成员的昵称,除此别无其他。通常不注意会用这样贸然去获取成员信息是,会照成错误,返回402(进入房间后获取超越权限错误:权限不足)等信息。以下是其他错误信息

401ErrorPresence 进入一个房间通知用户需要密码

403ErrorPresence 进入一个房间通知用户他或她被房间禁止了
404ErrorPresence 进入一个房间通知用户房间不存在
405ErrorPresence 进入一个房间通知用户限制创建房间
406ErrorPresence 进入一个房间通知用户必须使用保留的房间昵称
407ErrorPresence 进入一个房间通知用户他或她不在成员列表中
409ErrorPresence 进入一个房间通知用户他或她的房间昵称正在使用或被别的用户注册了
503ErrorPresence 进入一个房间通知用户已经达到最大用户数
用户聊天的使用一个 <status/> 元素(特指, <status/> 元素的的 'code' 属性 ) 来传达关于用户在一个房间里的状态的信息.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: