在客户端上开发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相关推荐

  1. ITK:Watch注册Registration

    ITK:Watch注册Registration 内容提要 输出结果 C++实现代码 内容提要 观看使用VTK进行的注册迭代 输出结果 输出: Optimizer stop condition: Reg ...

  2. XMPP中文 XEP-0045: 多用户聊天(二)

    修改主持人列表 管理员可能希望修改主持人列表. 为此, 管理员首先通过请求房间内所有角色为'moderator'的用户来请求主持人列表. 例子 136. 管理员请求主持人列表 <iq from= ...

  3. xmpp中文 XEP-0054:电子名片

    本文的英文原文来自XEP-0054 XEP-0054:电子名片 摘要: 本文档提供了目前在Jabber社区中使用的vCard-XML格式的典型文档. 作者: Peter Saint-Andre 版权: ...

  4. 5GC--UE注册类型

    在了解核心网注册类型之前,我们先明确下几个关键概念! IMSI: 移动国家码(MCC)由三位数组成. MCC 唯一标识移动用户所在国家/地区; 移动网络码(MNC)由两个或三个数字组成,用于 3GPP ...

  5. xmpp 中文 XEP-0084: 用户头像

    本文的英文原文来自XEP-0079 XEP-0079: 高级消息处理 摘要: 本文定义了一个XMPP协议扩展来实现实体请求,服务器执行的,高级XMPP message 节处理, 包括可靠数据传输, 时 ...

  6. Spring Cloud之服务注册与发现机制

    一.复杂与简单并存 1.背景: 到底是复杂好还是简单好,这是一个没有答案的问题,也是一个哲学问题.见仁见智啦.事物整体肯定是向复杂化方向发展,但是向人们呈现时应尽量简单化.用一句话来说就是:功能复杂化 ...

  7. XMPP 403错误解决办法

    xmpp 注册的时候 ,出现403 的错误 其实是没有配置xmpp的注册权限 我使用的是15.07版本的ejabber vim /opt/ejabberd-15.07/conf/ejabberd.ym ...

  8. OpenFire源码学习之六:用户注册

    用户注册 注册流程: 1.客户端进行握手给服务端发送连接消息: <stream:stream to="192.168.2.104" xmlns="jabber:cl ...

  9. Mongo北京大会3月3号召开!报名抢注火爆进行中!(免费)

    Mongo Beijing 简介 Mongo北京开发者聚会将讨论如何用开源的非关系型数据库MongoDB构建多彩的应用.由MongoDB工程师和经验丰富的MongoDB用户做演讲.演讲分为中文和英文, ...

最新文章

  1. Android百度地图scode,“androidsdk | 百度地图API SDK
  2. CFLAGS,CPPFLAGS,CXXFLAGS in Makefile
  3. Notepad++ 查找匹配中文
  4. 小白的markdown基础语法总结
  5. cc2530i2c可同时接受两个传感器的数据吗_汽车方向及维修_玉树沃尔沃S40方向机,宝马531电子方向机进水可以维修吗...
  6. 计组之存储系统:2、SRAM(区别、栅极电容、双稳态触发器、DRAM刷新、地址复用)和DRAM(MROM、PROM、EPROM、EEPROM)
  7. Java中基本类型和引用类型(简单介绍)
  8. Axure RP9使用指南
  9. 登录网易云显示服务器地址,[网易云音乐]登录流程还原
  10. 利用计算机解决问题的一般过程是怎样的,计算机解决问题的一般过程1
  11. 中移物联网在车联网场景的 TiDB 探索和实现
  12. Softmax和关于它的交叉熵损失函数详细求导过程
  13. Windows下动过批处理指令在浏览器中打开指定文件中的URL地址
  14. 万字干货 | 用游戏高手的用户洞察法,如何复制一个拼多多
  15. (装机)关于WINRE/ESP/LRS_ESP/MSR/PBR这些分区
  16. 比较两个字符串的大小
  17. 你们知道第一个发Nature的中国人是谁吗?
  18. ffmpeg截取视频第一帧
  19. android 相册 恢复,Android手机照片恢复一例
  20. 信息系统项目管理师-项目采购管理

热门文章

  1. JS 封装inserAfter()方法
  2. 基石为勤能补拙的迷宫之旅——第三天(Python基本数据类型,与用户交互(输出输入),运算符)
  3. VS2010到VS2019各个版本的密钥
  4. java 正则替换cdata_替换xml中的cdata标记
  5. css选择器包含哪些,css选择器有哪些
  6. 2015-9-7 记
  7. Java POI 导出excel附件,附件中设置超链接到其他文件或网址
  8. 如何在页面跳转后,再返回上级页面时,保留检索条件,刷新内容
  9. 技术管理(四)——观察团队成员风格
  10. 整合MGB实现CRUD以及各种姿势查询