Android基于XMPP Smack openfire 开发的聊天室(六) 【加入房间、权限错误】
1,加入房间错误,通常一个就是密码错误。此时服务器会返回以下报文:
- <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/> 错误
解决如下:
- // 使用XMPPConnection创建一个MultiUserChat
- MultiUserChat muc2 = new MultiUserChat(conn1,
- "myroom@chat.shakespeare.lit/thirdwitch");
- // 用户2使用密码加入新聊天室
- // 聊天室服务将会决定要发送的历史记录数量
- muc2.join("testbot2", "password");
报文如下:
- <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(进入房间后获取超越权限错误:权限不足)等信息。以下是其他错误信息
401 | Error | Presence | 进入一个房间 | 通知用户需要密码 |
403 | Error | Presence | 进入一个房间 | 通知用户他或她被房间禁止了 |
404 | Error | Presence | 进入一个房间 | 通知用户房间不存在 |
405 | Error | Presence | 进入一个房间 | 通知用户限制创建房间 |
406 | Error | Presence | 进入一个房间 | 通知用户必须使用保留的房间昵称 |
407 | Error | Presence | 进入一个房间 | 通知用户他或她不在成员列表中 |
409 | Error | Presence | 进入一个房间 | 通知用户他或她的房间昵称正在使用或被别的用户注册了 |
503 | Error | Presence | 进入一个房间 | 通知用户已经达到最大用户数 |
用户聊天的使用一个 <status/> 元素(特指, <status/> 元素的的 'code' 属性 ) 来传达关于用户在一个房间里的状态的信息.