xmpp 注册Registration

绝地灬酷狼 2022-07-26 00:19 283阅读 0赞

在客户端上开发xmpp的注册功能,即带内注册。

带内注册指的是未在服务器上开通账号的用户可以通过xmpp协议注册新账号。相反的概念是带外注册(out-of-band registration),例如
你必须到某个指定的web页面进行注册。
如果服务器允许带内注册,那么我们就可以通过自己开发的客户端注册新账号。与带内注册相关的协议是XEP-0077。

这里需要使用到插件 asmack-jse.jar

由于在Android平台下开发 所以我们用到的是 aSmack,与Smack没有很大的区别

下载地址:http://code.google.com/p/asmack/downloads/list

首先最重要的是配置连接

  1. public static String host = "192.168.1.101"; //自己服务器的IP
  2. public static int port = 5222; //开放端口号,openfire默认是5222
  3. static XMPPConnection connection;
  4. //依葫芦画瓢
  5. static{
  6. XMPPConnection.DEBUG_ENABLED = true;
  7. ConnectionConfiguration configuration = new ConnectionConfiguration(host, port);
  8. connection = new XMPPConnection(configuration);
  9. connection.DEBUG_ENABLED = true;
  10. ProviderManager pm = ProviderManager.getInstance();
  11. configure(pm);
  12. }

注册

  1. Registration reg = new Registration();
  2. reg.setType(IQ.Type.SET);
  3. reg.setTo(MainActivity.connection.getServiceName());
  4. reg.setUsername(usernameEdt.getText().toString());
  5. reg.setPassword(passwdEdt.getText().toString());
  6. reg.addAttribute("android", "geolo_createUser_android");
  7. System.out.println("reg:" + reg);
  8. PacketFilter filter = new AndFilter(new PacketIDFilter(reg
  9. .getPacketID()), new PacketTypeFilter(IQ.class));
  10. PacketCollector collector = MainActivity.connection
  11. .createPacketCollector(filter);
  12. MainActivity.connection.sendPacket(reg);
  13. result = (IQ) collector.nextResult(SmackConfiguration
  14. .getPacketReplyTimeout());
  15. // Stop queuing results
  16. collector.cancel();// 停止请求results(是否成功的结果)
  17. if (result == null) {
  18. Toast.makeText(getApplicationContext(), "服务器没有返回结果",
  19. Toast.LENGTH_SHORT).show();
  20. } else if (result.getType() == IQ.Type.ERROR) {
  21. if (result.getError().toString().equalsIgnoreCase(
  22. "conflict(409)")) {
  23. Toast.makeText(getApplicationContext(), "这个账号已经存在",
  24. Toast.LENGTH_SHORT).show();
  25. } else {
  26. Toast.makeText(getApplicationContext(), "注册失败",
  27. Toast.LENGTH_SHORT).show();
  28. }
  29. } else if (result.getType() == IQ.Type.RESULT) {
  30. Toast.makeText(getApplicationContext(), "恭喜你注册成功",
  31. Toast.LENGTH_SHORT).show();
  32. }

登录

  1. MainActivity.connection.login(usernameEdt.getText().toString(), pwdEdt.getText().toString());
  2. Button loginBtn = (Button) findViewById(R.id.btn_login);
  3. loginBtn.setEnabled(false);
  4. loginBtn.setText("登录成功");

发表评论

表情:
评论列表 (有 0 条评论,283人围观)

还没有评论,来说两句吧...

相关阅读

    相关 xmpp 注册Registration

    在客户端上开发xmpp的注册功能,即带内注册。 带内注册指的是未在服务器上开通账号的用户可以通过xmpp协议注册新账号。相反的概念是带外注册(out-of-band r

    相关 XMPP协议

    [XMPP][](Extensible Messageing and Presence Protocol)可扩展消息与存在协议,是目前主流的四种IM(即时消息)协议之一,其它三