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

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

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

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

[html]  view plain copy print ?
  1. <presence  
  2.     from='[email protected]'  
  3.     to='[email protected]/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 plain copy print ?
  1. // 使用XMPPConnection创建一个MultiUserChat  
  2.             MultiUserChat muc2 = new MultiUserChat(conn1,  
  3.                     "[email protected]/thirdwitch");  
  4.   
  5.             // 用户2使用密码加入新聊天室  
  6.             // 聊天室服务将会决定要发送的历史记录数量  
  7.             muc2.join("testbot2""password");  


报文如下:

[html]  view plain copy print ?
  1. <presence  
  2.             from='[email protected]/pda'  
  3.             to='[email protected]/thirdwitch'>  
  4.           <x xmlns='http://jabber.org/protocol/muc'>  
  5.             <password>password</password>  
  6.           </x>  
  7.         </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' 属性  ) 来传达关于用户在一个房间里的状态的信息.

 

你可能感兴趣的:(android,XMPP)