`
wiseideal
  • 浏览: 443853 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

XMPP下的注册与登录

 
阅读更多

前面讲了本地如何搭建XMPP环境 其实我不懂 也没认真的好好研究原理 这肯定是要看的 不过先上手把代码拼上去 再细细debug 一点点的理解 这两篇的博客也是想帮助那些和我过去一样 认为XMPP是一个多高端多遥远的东西 我想告诉那些人的是 其实就在你手边 

因为我也才接触 不敢保证代码规范 以及是否有隐藏的bug 各位如果有缘 看过有帮助就好 没有帮助笑笑就算了

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

首先最重要的是配置连接

	public static String host = "192.168.1.101";
	public static int port = 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);
	}

 注意这里的host 貌似加http会出问题 应该根本就不是用的http协议吧 端口默认是5222 你可以去openfire服务器配置中查询

 

 

接下来注册和登录就好说了

 

注册

 

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("登录成功");

 

 

代码太凌乱 上来格式都变了 还是整个项目看着方便

 

 

 

 

 

  • 大小: 20.4 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics