XMPP(服务器Openfire)框架下,修改用户密码
2014-03-26 20:23
996 查看
1.先按照协议0077中修改密码的XML修改自己的
{
/*
<iq type='set' to='shakespeare.lit' id='change1'>
<query xmlns='jabber:iq:register'>
<username>bill</username>
<password>newpass</password>
</query>
</iq>
*/
NSXMLElement *iq = [NSXMLElementelementWithName:@"iq"];
[iq addAttributeWithName:@"type"stringValue:@"set"];
[iq addAttributeWithName:@"to"stringValue:@"ubuntu-dev"];
[iq addAttributeWithName:@"id"stringValue:CHANG_PWD_id]; //#define
CHANG_PWD_id @"change1"确定id唯一就行
NSXMLElement *queryElement = [NSXMLElementelementWithName:@"query"xmlns:@"jabber:iq:register"];
[iq addChild:queryElement];
NSString *userNameStr = [[NSUserDefaultsstandardUserDefaults]objectForKey:@"userName"];
NSXMLElement *username = [NSXMLElementelementWithName:@"username"];
[username setStringValue:userNameStr];
NSXMLElement *password = [NSXMLElementelementWithName:@"password"];
NSLog(@"self.tfNewPWDSure.text_______:%@",self.tfNewPWDSure.text);
[password setStringValue:self.tfNewPWDSure.text];
[queryElement addChild:username];
[queryElement addChild:password];
// NSLog(@"iq__%@",iq.description);//打印下XML流检查是否拼接正确
[[XMPPServiceshareInstance].xmppStreamsendElement:iq];//发送{XMPPStream被我封装进单例类XMPPService里}
[[XMPPServiceshareInstance].xmppStreamaddDelegate:selfdelegateQueue:dispatch_get_main_queue()];//设置代理
}
#pragma make - xmppStream
- (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq{
NSLog(@"__%@",iq.description);
/*
<iq xmlns="jabber:client" type="result" id="change1" from="ubuntu-dev" to="13333333333@ubuntu-dev/870efdcd"></iq>
*/
NSString *iqTypePWD = [[iq
attributeForName:@"type"]stringValue];
NSString *iqIDPWD = [[iqattributeForName:@"id"]stringValue];
NSLog(@"iqTypePWD:%@___iqTypePWD:%@",iqTypePWD,iqIDPWD);
if ([iqTypePWD isEqualToString:@"result"]&&[iqIDPWDisEqualToString:CHANG_PWD_id]) { //进行判断只有type="result" id="change1"时,密码修改成功
NSLog(@"OpenFire密码修改成功!");
}
return YES;
}
个人总结:XMPP框架不是万能的,但XML流是万能的,当XMPP无法满足你的需求时,用XML可以轻松搞定!
{
/*
<iq type='set' to='shakespeare.lit' id='change1'>
<query xmlns='jabber:iq:register'>
<username>bill</username>
<password>newpass</password>
</query>
</iq>
*/
NSXMLElement *iq = [NSXMLElementelementWithName:@"iq"];
[iq addAttributeWithName:@"type"stringValue:@"set"];
[iq addAttributeWithName:@"to"stringValue:@"ubuntu-dev"];
[iq addAttributeWithName:@"id"stringValue:CHANG_PWD_id]; //#define
CHANG_PWD_id @"change1"确定id唯一就行
NSXMLElement *queryElement = [NSXMLElementelementWithName:@"query"xmlns:@"jabber:iq:register"];
[iq addChild:queryElement];
NSString *userNameStr = [[NSUserDefaultsstandardUserDefaults]objectForKey:@"userName"];
NSXMLElement *username = [NSXMLElementelementWithName:@"username"];
[username setStringValue:userNameStr];
NSXMLElement *password = [NSXMLElementelementWithName:@"password"];
NSLog(@"self.tfNewPWDSure.text_______:%@",self.tfNewPWDSure.text);
[password setStringValue:self.tfNewPWDSure.text];
[queryElement addChild:username];
[queryElement addChild:password];
// NSLog(@"iq__%@",iq.description);//打印下XML流检查是否拼接正确
[[XMPPServiceshareInstance].xmppStreamsendElement:iq];//发送{XMPPStream被我封装进单例类XMPPService里}
[[XMPPServiceshareInstance].xmppStreamaddDelegate:selfdelegateQueue:dispatch_get_main_queue()];//设置代理
}
#pragma make - xmppStream
- (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq{
NSLog(@"__%@",iq.description);
/*
<iq xmlns="jabber:client" type="result" id="change1" from="ubuntu-dev" to="13333333333@ubuntu-dev/870efdcd"></iq>
*/
NSString *iqTypePWD = [[iq
attributeForName:@"type"]stringValue];
NSString *iqIDPWD = [[iqattributeForName:@"id"]stringValue];
NSLog(@"iqTypePWD:%@___iqTypePWD:%@",iqTypePWD,iqIDPWD);
if ([iqTypePWD isEqualToString:@"result"]&&[iqIDPWDisEqualToString:CHANG_PWD_id]) { //进行判断只有type="result" id="change1"时,密码修改成功
NSLog(@"OpenFire密码修改成功!");
}
return YES;
}
个人总结:XMPP框架不是万能的,但XML流是万能的,当XMPP无法满足你的需求时,用XML可以轻松搞定!
相关文章推荐
- SVN服务器搭建和使用以及冲突解决、用户密码修改
- 【Openfire】网页版的用户注册、登录、修改密码
- 服务器修改用户密码注意iis部署的网站问题
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- 基于Smack3.0.4+ Openfire3.10.2下学习开发IM(一)实现用户登录、修改密码、删除指定用户和注册新用户等
- PHP ajax用户密码修改 CI框架
- Linux 服务器用户修改密码小结
- openfire修改管理控制台admin用户密码
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- XMPP框架 微信项目开发之XMPP配置——MySQL数据库、MySQLworkbench、Openfire服务器的安装与配置
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- Openfire 服务器搭建问题记录(重新配置以及修改管理员密码)
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- XMPP 服务器 Openfire 的 Emoji 支持问题(进行部分修改)
- Windows 2008 R2 域服务器web方式修改域用户密码
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等