smack/asmack 监听特定报文代码
来源:互联网 发布:淘宝没有指纹支付选项 编辑:程序博客网 时间:2024/06/05 17:53
首先需要两个类
import org.jivesoftware.smack.packet.PacketExtension;public class XtalkMessage implements PacketExtension {private StringBuffer packetContent = null;public static final String ELEMENT_NAME="xtalk";public static final String NAME_SPACE="urn:xmpp:xtalk:dd";public StringBuffer getPacketContent() {return packetContent;}public void setPacketContent(StringBuffer packetContent) {this.packetContent = packetContent;}@Overridepublic String getElementName() {// TODO Auto-generated method stubreturn ELEMENT_NAME;}@Overridepublic String getNamespace() {// TODO Auto-generated method stubreturn NAME_SPACE;}@Overridepublic String toXML() {// TODO Auto-generated method stubreturn packetContent.toString();}}
import org.jivesoftware.smack.packet.PacketExtension;import org.jivesoftware.smack.provider.PacketExtensionProvider;import org.jivesoftware.smack.util.StringUtils;import org.xmlpull.v1.XmlPullParser;public class XtalkMessageProvider implements PacketExtensionProvider {public XtalkMessageProvider() {}public PacketExtension parseExtension(XmlPullParser parser)throws Exception {XtalkMessage messageEvent = new XtalkMessage();StringBuffer buffer = new StringBuffer();boolean done = false;int oldNsCount = 0;oldNsCount = parser.getNamespaceCount(parser.getDepth());while (!done) {int eventType = parser.next();if (eventType == XmlPullParser.START_TAG) {buffer.append('<' + parser.getName());int ns = parser.getNamespaceCount(parser.getDepth());for (int i = oldNsCount; i < ns; i++) {if (parser.getNamespacePrefix(i) != null) {buffer.append(" xmlns:").append(parser.getNamespacePrefix(i)).append("=\"").append(parser.getNamespaceUri(i)).append("\"");} else {buffer.append(" xmlns=\"").append(parser.getNamespaceUri(i)).append("\"");}}oldNsCount = ns;for (int i = 0; i < parser.getAttributeCount(); i++) {buffer.append(" ").append(parser.getAttributeName(i)).append("=");buffer.append("\"").append(parser.getAttributeValue(i)).append("\"");}buffer.append('>');} else if (eventType == XmlPullParser.TEXT) {// System.out.println("XmlPullParser.TEXT:"// + StringUtils.escapeForXML(parser.getText()));//buffer.append(StringUtils.escapeForXML(parser.getText())); buffer.append(parser.getText());} else if (eventType == XmlPullParser.END_TAG) {if (parser.getName().equals(XtalkMessage.ELEMENT_NAME)) {done = true;} else {buffer.append("</" + parser.getName() + '>');}}}// System.out.println(TAG + " PacketExtension:" + buffer.toString());messageEvent.setPacketContent(buffer);return messageEvent;}}
在主程序中调用如下:
ProviderManager.getInstance().addExtensionProvider(XtalkMessage.ELEMENT_NAME, XtalkMessage.NAME_SPACE,new XtalkMessageProvider());
0 0
- smack/asmack 监听特定报文代码
- Smack和Asmack
- Smack和Asmack
- Android版的Smack:aSmack
- Android版的Smack:aSmack
- xmpp Smack asmack Spark MINA Openfire androidpn MQTT RSMB
- 如何监听到asmack联系人资料变动
- asmack
- Android smack 4.2.0 OutgoingChatMessageListener 监听不到
- 关于基于android的smack–asmack中注册用户的问题
- 关于基于android的smack–asmack中注册用户的问题
- aSmack连接服务器异常smack.SmackException$ ConnectionException thrown by XMPPConnection.connect();
- Ack报文反射代码
- smack
- smack
- smack
- Smack
- smack
- java利用htmlparser获取html中想要的代码
- 物化视图刷新方式
- ngnix和tomcat日志
- Live555 流程上的一些分析
- java nio学习记录2---详解
- smack/asmack 监听特定报文代码
- 在论坛中出现的比较难的sql问题:24(生成时间段)
- Halcon简介
- Android类库--与Adapter相关的类
- WPF +MVVM模式下的增删改查
- getHibernateTemplate常用方法
- openstack:nova中的几个问题分析
- “资本公积”与“盈余公积”的区别
- web前端+jsp页面中使用hidden来传值