基于smack的xmpp packet 重写
基于Smack 实现Notification数据包。smack的类中有一个org.jivesoftware.smack.packet.IQ只需对他重写即可,在做的时候其实可以简单一点的,如果你使用tinder.jar 包,其IQ org.xmpp.packet.IQ 有一个 setChildElement 方法与 getChildElement相对应,但smack没有!
主要用于与android Client之间Push通信。定义一套自己的数据包格式:
<iq id="11111" to="aa@qq.com" type="get">
<notification xmlns="androidpn:iq:notification">
<id>123456</id>
<apiKey>1234567890</apiKey>
<title>nothing</title>
<message>jintiantianqibuycuo</message>
<uri>heoo</uri>
</notification>
</iq>
重新写了一下body的部分,代码如下:
/**
* Notification 重写XMPP 的IQ packet (Smack)
*
* @author Charles
* @date 2011/10/16
*
*
*/ package com.gareatech.testxmpp; import org.jivesoftware.smack.packet.IQ; /**
* 重构之后的数据样式
* -
* <iq id="11111" to="aa@qq.com" type="get">
* <notification xmlns="androidpn:iq:notification">
* <id>123456</id>
* <apiKey>1234567890</apiKey>
* <title>nothing</title>
* <message>jintiantianqibuycuo</message>
* <uri>heoo</uri>
* </notification>
* </iq>
*
* */
public class Notification extends IQ {
private Notify notify; public Notify getNotify() {
return notify;
} public void setNotify(Notify notify) {
this.notify = notify;
} @Override
public String getChildElementXML() {
StringBuilder buf = new StringBuilder();
if (notify != null) {
buf.append(notify.toXML());
}
return buf.toString();
} /**
* Notify
* Body 部分,重写为<>
*
* */
public static class Notify {
private String id;
private String apiKey ;
private String title;
private String message;
private String uri; public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getApiKey() {
return apiKey;
} public void setApiKey(String apiKey) {
this.apiKey = apiKey;
} public String getTitle() {
return title;
} public void setTitle(String title) {
this.title = title;
} public String getMessage() {
return message;
} public void setMessage(String message) {
this.message = message;
} public String getUri() {
return uri;
} public void setUri(String uri) {
this.uri = uri;
} public String toXML() {
StringBuilder buf = new StringBuilder();
buf.append("<notification xmlns=\"").append("androidpn:iq:notification\">");
buf.append("<id>").append(id).append("</id>");
buf.append("<apiKey>").append(apiKey).append("</apiKey>");
buf.append("<title>").append(title).append("</title>");
buf.append("<message>").append(message).append("</message>");
buf.append("<uri>").append(uri).append("</uri>");
buf.append("</notification>");
return buf.toString();
}
}
}
基于smack的xmpp packet 重写的更多相关文章
- XMPP即时通讯协议使用(二)——基于Smack相关操作
package com.test; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator ...
- Android studio使用smack连接xmpp服务器收发消息
我使用的是ejabberd16.09的Linux版本,安装教程网上有很多,我在这里只介绍一下Android端连接.登录和收发消息的方法.文章最后附上了我写的一个demo,欢迎大家参考. ejabber ...
- 基于xmpp openfire smack开发之openfire介绍和部署[1]
前言 http://blog.csdn.net/shimiso/article/details/8816558 Java领域的即时通信的解决方案可以考虑openfire+spark+smack.当然也 ...
- Openfire XMPP Smack RTC IM 即时通讯 聊天 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- 基于openfire+smack即时通讯instant message开发
前言 Java领域的即时通信的解决方案可以考虑openfire+spark+smack.当然也有其他的选择. Openfire 是基于Jabber协议(XMPP)实现的即时通信服务器端版本,目前建议使 ...
- xmpp openfire smack 介绍和openfire安装及使用
前言 Java领域的即时通信的解决方案可以考虑openfire+spark+smack.当然也有其他的选择. Openfire是基于Jabber协议(XMPP)实现的即时通信服务器端版本,目前建议使用 ...
- 基于XMPP协议的Android即时通信系
以前做过一个基于XMPP协议的聊天社交软件,总结了一下.发出来. 设计基于开源的XMPP即时通信协议,采用C/S体系结构,通过GPRS无线网络用TCP协议连接到服务器,以架设开源的Openfn'e服务 ...
- (转)基于即时通信和LBS技术的位置感知服务(二):XMPP协议总结以及开源解决方案
在<基于即时通信和LBS技术的位置感知服务(一):提出问题及解决方案>一文中,提到尝试使用XMPP协议来实现即时通信.本文将对XMPP协议框架以及相关的C/S架构进行介绍,协议的底层实现不 ...
- 基于XMPP 协议的开发 android
设计过一款基于开源的XMPP即时通信协议的软件.採用C/S协议,通过GPRS无线网络用TCP协议到server.以架设开源的Openfire server作为即时通讯平台 系统主要由下面部分组成:一是 ...
随机推荐
- linux 访问windows共享
1. windows端建立一个用户user用于共享访问 2. 共享一个目录,设置user可以访问,并在windows系统中确认可以访问 3. linux端创建一个用于挂载共享目录的目录 mkdi ...
- mysql通过frm+ibd文件还原data
此方法只适合innodb_file_per_table = 1 当误删除ibdata 该怎么办? 如下步骤即可恢复: 1.准备工作 1)准备一台纯洁的mysql环境[从启动到现在没有 ...
- Linux内核学习笔记: uid之ruid,euid,suid
转自: http://www.linuxidc.com/Linux/2011-09/43194.htm 看UNIX相关的书时经常能遇到这几个概念,但一直没有好好去理清这几个概念,以致对这几个概念一直一 ...
- SPRING IN ACTION 第4版笔记-第六章Rendering web views-001- Spring支持的View Resolver、InternalResourceViewResolver、JstlView
一.Spring支持的View Resolver 二.InternalResourceViewResolver Spring supports JSP views in two ways: Inte ...
- Android 设置按钮为透明
设置一个按钮为透明, (1)修改配置文件 <Button android:id="@+id/btnAppMore" android:layout_width="wr ...
- yii 验证器和验证码
http://www.yiiframework.com/doc/api/1.1/CCaptcha http://www.cnblogs.com/analyzer/articles/1673015.ht ...
- Moduli number system
A number system with moduli is defined by a vector of k moduli, [m1,m2, ···,mk]. The moduli must be p ...
- 使用Xcode查找项目中的中文字符串
打开”Find Navigator” 切换搜索模式到 “Find > Regular Expression” 输入@"[^"]*[\u4E00-\u9FA5]+[^" ...
- .net文件压缩和解压及中文文件夹名称乱码问题
/**************************注释区域内为引用http://www.cnblogs.com/zhaozhan/archive/2012/05/28/2520701.html的博 ...
- android webview 访问https页面 SslError 处理
在Android中,WebView可以用来加载http和https网页到本地应用的控件.但是在默认情况下,通过loadUrl(String url)方法,可以顺利loadUrl(“http://www ...