我无法从Ejabberd服务器获得花名册



我偶然发现了一个聊天软件。

由于我以前没有使用过Ejabberd服务器,所以我遇到了一个获取花名册的问题。

我每次都将列表作为nil,即使联系人列表在服务器上可用。

下面是我用来获取花名册的方法。

下面是我获取联系人的方法:

在这段代码中,我每次得到的查询列表都是nil

-(void)fetchContacts {
NSError *error = [[NSError alloc] init];
NSXMLElement *query = [[NSXMLElement alloc] initWithXMLString:@"<query xmlns='jabber:iq:roster'/>" error:&error];
XMPPIQ *iq = [DDXMLElement elementWithName:@"iq"];
[iq addAttributeWithName:@"type" stringValue:@"get"];
[iq addChild:query];
[self.xmppStream sendElement:iq];
}

Did received IQ method:

- (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq{ 
NSXMLElement *query = [iq elementForName: @"query" xmlns: @"jabber:iq:roster"];
if (query) {
NSArray *item = [query elementsForName: @"item"];
NSMutableArray *arr = [[NSMutableArray alloc] init];
for (int i=0; i<[item count]; i++) {
NSString *jid=[[[item objectAtIndex:i] attributeForName:@"jid"] stringValue];
[arr addObject:jid];
}
[userDefault setValue:arr forKey:@"contacts"];
[userDefault synchronize];
[[NSNotificationCenter defaultCenter] postNotificationName:@"ContactsData" object:nil];
}
return YES; 
}

我已经尝试了很多解决方案,但没有一个对我有效。

谢谢!

使用网络流量来捕获客户端发送给ejabberd的内容。

然后安装一个知名的XMPP客户端,例如Gajim, Psi, Tkabber…然后使用该客户端执行相同的操作,并再次捕获客户端发送的XML。

将此与客户端发送的XML进行比较,希望您能看到一些相关的更改(以及其他不相关的差异)。

相关内容

  • 没有找到相关文章

最新更新