首页 > 其他 > 详细

Xmpp发送自定义IQ包

时间:2015-01-06 02:20:30      阅读:176      评论:0      收藏:0      [点我收藏+]

?

Xmpp发送自定义的iq

?

因为需要做扩展业务,学习了插件开发,但是客户端的怎么构造packet发消息到服务器插件一直没有搞明白,于是各种百度未果后,准备自己摸索,最开始用的和服务器一样的dom4j构造了一个xml节点,如下:

/**
 * 构建iq的扩展包,用于发送用户所在房间的名称。
 */
Document document = DocumentHelper.createDocument();
Element iqe = document.addElement("iq");
iqe.addAttribute("type", "result");
iqe.addAttribute("to", userJid.toFullJID());
iqe.addAttribute("id", IDUtil.getID());
 
Namespace namespace = new Namespace("", "larson");
Element response = iqe.addElement("wechat");
response.add(namespace);
 
// 最后发送出去!
IQ iq = new IQ(iqe);
System.out.println("iq " + iq.toXML());
router.route(iq);

?

但是发现asmackiq并没有new?IQ这个方法,我怎么页new不出,在各种百度提问未果时,我想到了spark的源码,果然在spark的插件包下找到了,哦,原来是自定义的iq包是集成IQ复写里面的方法,然后发送自定义的这个对象来实现的,如下:

?

import org.jivesoftware.smack.packet.IQ;

public class WeChatPacket extends IQ {

	public static final String ELEMENT_NAME = "wechat";
	public static final String NAMESPACE = "wechat";

	private String urlStr;
	private String json;

	public String getUrlStr() {
		return urlStr;
	}

	public void setUrlStr(String urlStr) {
		this.urlStr = urlStr;
	}

	public String getJson() {
		return json;
	}

	public void setJson(String json) {
		this.json = json;
	}

	@Override
	public String getChildElementXML() {
		StringBuffer buf = new StringBuffer();
		buf.append("<" + ELEMENT_NAME + " xmlns=\"" + NAMESPACE + "\">");
		if (getType() == IQ.Type.GET) {
			buf.append("<urlStr>").append(urlStr).append("</urlStr>");
			buf.append("<json>").append(json).append("</json>");
			buf.append(getExtensionsXML());
		}
		buf.append("</" + ELEMENT_NAME + ">");
		return buf.toString();
	}

}

?发送的时候直接发送就好了:

?

private static Packet makeXmppPacket(String urlStr, String json) {
		
		WeChatPacket packet = new WeChatPacket();
		packet.setJson(json);
		packet.setUrlStr(urlStr);
		packet.setType(IQ.Type.SET); 
		return packet;
	}

?

特意写个博客出来帮助和我一样在摸索的小伙伴。

?

尊重原创,转载请注明出处,谢谢。

Xmpp发送自定义IQ包

原文:http://zhonglunshun.iteye.com/blog/2172600

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!