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";  //自己服务器的IP
    public static int port = 5222;           //开放端口号,openfire默认是5222
    static 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("登录成功");



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值