1.IQ包的一個例子:
<iq id="xxx" type="get" 'to="xx" from="xx"><name xmlns="xxxx">hello world</iq>
2.首先要寫一個IQ包,如果你想給Openfire過濾的話,最好自定義一個命名空間就像上面那個例子那樣,紅色部分那些東西。藍色部分為你要添加進去的內容。
3.下面是IQ包的創建問題。
1 package com.xmpp.iq; 2 3 import org.jivesoftware.smack.packet.IQ; 4 5 public class SimpleIQ extends IQ { 6 7 // the childElement of this IQ,set position info 8 private String positionElement; 9 private static String INDEX_XMLNS="simple:simple"; 10 11 12 // constructor 13 public SimpleIQ(String element) { 14 15 setDefaultXmlns(INDEX_XMLNS); 16 setPositionElement(element); 17 toXML(); 18 } 19 20 //get and set 21 public String getPositionElement() { 22 return positionElement; 23 } 24 25 26 public void setPositionElement(String positionElement) { 27 this.positionElement = positionElement; 28 } 29 //get and set end 30 31 32 //最重要的是這里了,其他可以無視,你這里返回的是IQ父節點里面的內容,里面你喜歡做什么就做什么,你可以加節點進去,比如我return "<myNode xmlns='simple:simple'/>"+"x,y
z,a,b,c" ,這個IQ包解析成XML就會變成這樣 <iq id="xxx" type="get" 'to="xx" from="xx"><myNode xmlns='simple:simple'/>x,y,z,a,b,c</iq>
33 @Override 34 public String getChildElementXML() { 35 // TODO Auto-generated method stub 36 return getPositionElement(); 37 } 38 39 }
最后理解了這個東西的話,就沒有什么大問題了。還有如果要接受IQ包的話,就要寫個類實現IQProvider這個借口了,用他來解釋IQ包。