xmpp 注册Registration
在客户端上开发xmpp的注册功能,即带内注册。
带内注册指的是未在服务器上开通账号的用户可以通过xmpp协议注册新账号。相反的概念是带外注册(out-of-band registration),例如
你必须到某个指定的web页面进行注册。
如果服务器允许带内注册,那么我们就可以通过自己开发的客户端注册新账号。与带内注册相关的协议是XEP-0077。
这里需要使用到插件 asmack-jse.jar
由于在Android平台下开发 所以我们用到的是 aSmack,与Smack没有很大的区别
下载地址:http://code.google.com/p/asmack/downloads/list
首先最重要的是配置连接
public static String host = "192.168.1.101"; //自己服务器的IPpublic static int port = 5222; //开放端口号,openfire默认是5222static XMPPConnection connection; //依葫芦画瓢 static{ XMPPConnection.DEBUG_ENABLED = true; ConnectionConfiguration configuration = new ConnectionConfiguration(host, port); connection = new XMPPConnection(configuration); connection.DEBUG_ENABLED = true; ProviderManager pm = ProviderManager.getInstance(); configure(pm); }
注册
Registration reg = new Registration(); reg.setType(IQ.Type.SET); reg.setTo(MainActivity.connection.getServiceName()); reg.setUsername(usernameEdt.getText().toString()); reg.setPassword(passwdEdt.getText().toString()); reg.addAttribute("android", "geolo_createUser_android"); System.out.println("reg:" + reg); PacketFilter filter = new AndFilter(new PacketIDFilter(reg .getPacketID()), new PacketTypeFilter(IQ.class)); PacketCollector collector = MainActivity.connection .createPacketCollector(filter); MainActivity.connection.sendPacket(reg); result = (IQ) collector.nextResult(SmackConfiguration .getPacketReplyTimeout()); // Stop queuing results collector.cancel();// 停止请求results(是否成功的结果) if (result == null) { Toast.makeText(getApplicationContext(), "服务器没有返回结果", Toast.LENGTH_SHORT).show(); } else if (result.getType() == IQ.Type.ERROR) { if (result.getError().toString().equalsIgnoreCase( "conflict(409)")) { Toast.makeText(getApplicationContext(), "这个账号已经存在", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getApplicationContext(), "注册失败", Toast.LENGTH_SHORT).show(); } } else if (result.getType() == IQ.Type.RESULT) { Toast.makeText(getApplicationContext(), "恭喜你注册成功", Toast.LENGTH_SHORT).show(); }
登录
MainActivity.connection.login(usernameEdt.getText().toString(), pwdEdt.getText().toString()); Button loginBtn = (Button) findViewById(R.id.btn_login); loginBtn.setEnabled(false); loginBtn.setText("登录成功");
xmpp 注册Registration相关推荐
- ITK:Watch注册Registration
ITK:Watch注册Registration 内容提要 输出结果 C++实现代码 内容提要 观看使用VTK进行的注册迭代 输出结果 输出: Optimizer stop condition: Reg ...
- XMPP中文 XEP-0045: 多用户聊天(二)
修改主持人列表 管理员可能希望修改主持人列表. 为此, 管理员首先通过请求房间内所有角色为'moderator'的用户来请求主持人列表. 例子 136. 管理员请求主持人列表 <iq from= ...
- xmpp中文 XEP-0054:电子名片
本文的英文原文来自XEP-0054 XEP-0054:电子名片 摘要: 本文档提供了目前在Jabber社区中使用的vCard-XML格式的典型文档. 作者: Peter Saint-Andre 版权: ...
- 5GC--UE注册类型
在了解核心网注册类型之前,我们先明确下几个关键概念! IMSI: 移动国家码(MCC)由三位数组成. MCC 唯一标识移动用户所在国家/地区; 移动网络码(MNC)由两个或三个数字组成,用于 3GPP ...
- xmpp 中文 XEP-0084: 用户头像
本文的英文原文来自XEP-0079 XEP-0079: 高级消息处理 摘要: 本文定义了一个XMPP协议扩展来实现实体请求,服务器执行的,高级XMPP message 节处理, 包括可靠数据传输, 时 ...
- Spring Cloud之服务注册与发现机制
一.复杂与简单并存 1.背景: 到底是复杂好还是简单好,这是一个没有答案的问题,也是一个哲学问题.见仁见智啦.事物整体肯定是向复杂化方向发展,但是向人们呈现时应尽量简单化.用一句话来说就是:功能复杂化 ...
- XMPP 403错误解决办法
xmpp 注册的时候 ,出现403 的错误 其实是没有配置xmpp的注册权限 我使用的是15.07版本的ejabber vim /opt/ejabberd-15.07/conf/ejabberd.ym ...
- OpenFire源码学习之六:用户注册
用户注册 注册流程: 1.客户端进行握手给服务端发送连接消息: <stream:stream to="192.168.2.104" xmlns="jabber:cl ...
- Mongo北京大会3月3号召开!报名抢注火爆进行中!(免费)
Mongo Beijing 简介 Mongo北京开发者聚会将讨论如何用开源的非关系型数据库MongoDB构建多彩的应用.由MongoDB工程师和经验丰富的MongoDB用户做演讲.演讲分为中文和英文, ...
最新文章
- Android百度地图scode,“androidsdk | 百度地图API SDK
- CFLAGS,CPPFLAGS,CXXFLAGS in Makefile
- Notepad++ 查找匹配中文
- 小白的markdown基础语法总结
- cc2530i2c可同时接受两个传感器的数据吗_汽车方向及维修_玉树沃尔沃S40方向机,宝马531电子方向机进水可以维修吗...
- 计组之存储系统:2、SRAM(区别、栅极电容、双稳态触发器、DRAM刷新、地址复用)和DRAM(MROM、PROM、EPROM、EEPROM)
- Java中基本类型和引用类型(简单介绍)
- Axure RP9使用指南
- 登录网易云显示服务器地址,[网易云音乐]登录流程还原
- 利用计算机解决问题的一般过程是怎样的,计算机解决问题的一般过程1
- 中移物联网在车联网场景的 TiDB 探索和实现
- Softmax和关于它的交叉熵损失函数详细求导过程
- Windows下动过批处理指令在浏览器中打开指定文件中的URL地址
- 万字干货 | 用游戏高手的用户洞察法,如何复制一个拼多多
- (装机)关于WINRE/ESP/LRS_ESP/MSR/PBR这些分区
- 比较两个字符串的大小
- 你们知道第一个发Nature的中国人是谁吗?
- ffmpeg截取视频第一帧
- android 相册 恢复,Android手机照片恢复一例
- 信息系统项目管理师-项目采购管理