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

来源:互联网 发布:JAVA求合法数字 编辑:程序博客网 时间:2024/05/08 18:30

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

分类: Android XMPP 5090人阅读 评论(8) 收藏 举报
聊天smackxmppandroid服务器xml

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

[html] view plaincopyprint?
  1. <presence  
  2.     from='darkcave@chat.shakespeare.lit'  
  3.     to='hag66@shakespeare.lit/pda'  
  4.     type='error'>  
  5.   <x xmlns='http://jabber.org/protocol/muc'/>  
  6.   <error type='auth'>  
  7.     <not-authorized xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>  
  8.   </error>  
  9. </presence>  


 

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

解决如下:

[java] view plaincopyprint?
  1. // 使用XMPPConnection创建一个MultiUserChat  
  2.             MultiUserChat muc2 = new MultiUserChat(conn1,  
  3.                     "myroom@chat.shakespeare.lit/thirdwitch");  
  4.   
  5.             // 用户2使用密码加入新聊天室  
  6.             // 聊天室服务将会决定要发送的历史记录数量  
  7.             muc2.join("testbot2""password");  


报文如下:

[html] view plaincopyprint?
  1. <presence  
  2.             from='hag66@shakespeare.lit/pda'  
  3.             to='myroom@chat.shakespeare.lit/thirdwitch'>  
  4.           <x xmlns='http://jabber.org/protocol/muc'>  
  5.             <password>password</password>  
  6.           </x>  
  7.         </presence>  


2,权限错误:

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

 

401ErrorPresence 进入一个房间

通知用户需要密码

403ErrorPresence 进入一个房间通知用户他或她被房间禁止了404ErrorPresence 进入一个房间通知用户房间不存在405ErrorPresence 进入一个房间通知用户限制创建房间406ErrorPresence 进入一个房间通知用户必须使用保留的房间昵称407ErrorPresence 进入一个房间通知用户他或她不在成员列表中409ErrorPresence 进入一个房间通知用户他或她的房间昵称正在使用或被别的用户注册了503ErrorPresence 进入一个房间通知用户已经达到最大用户数

用户聊天的使用一个 <status/> 元素(特指, <status/> 元素的的 'code' 属性  ) 来传达关于用户在一个房间里的状态的信息.

 

原创粉丝点击