Android基於XMPP Smack openfire 開發的聊天室(六) 【加入房間、許可權錯誤】

yangxi_001發表於2014-03-05

1,加入房間錯誤,通常一個就是密碼錯誤。此時伺服器會返回以下報文:

  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/> 錯誤

解決如下:

  1. // 使用XMPPConnection建立一個MultiUserChat  
  2.             MultiUserChat muc2 = new MultiUserChat(conn1,  
  3.                     "myroom@chat.shakespeare.lit/thirdwitch");  
  4.   
  5.             // 使用者2使用密碼加入新聊天室  
  6.             // 聊天室服務將會決定要傳送的歷史記錄數量  
  7.             muc2.join("testbot2""password");  


報文如下:

  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(進入房間後獲取超越許可權錯誤:許可權不足)等資訊。以下是其他錯誤資訊

 

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' 屬性  ) 來傳達關於使用者在一個房間裡的狀態的資訊.

相關文章