使用InBand Registration在openfire服务器上注册的xmpp获取注册用户

时间:2014-03-04 11:00:16

标签: ios iphone openfire xmppframework http-status-code-503

有没有办法可以让所有在openfire服务器上使用InBand注册注册的用户。我检查了以下链接:

1。ios-xmpp-framework-get-all-registered-users

2。ios-xmpp-framework-with-openfire-server-get-all-registered-users

但这些链接没有帮助。如果我使用以上链接中使用的以下代码:

- (void)getAllRegisteredUsers {

NSError *error = [[NSError alloc] init];
NSXMLElement *query = [[NSXMLElement alloc] initWithXMLString:@"<query xmlns='http://jabber.org/protocol/disco#items' node='all users'/>"
                                                        error:&error];
XMPPIQ *iq = [XMPPIQ iqWithType:@"get"
                             to:[XMPPJID jidWithString:@"DOMAIN"]
                      elementID:[xmppStream generateUUID] child:query];
[xmppStream sendElement:iq];
}

我收到503错误代码,服务不可用消息。任何人都可以告诉我,如果我在iOS端做错了什么,或者服务器丢失了什么。欢迎提出所有建议。

2 个答案:

答案 0 :(得分:0)

需要将“DOMAIN”更改为您的服务器名称

答案 1 :(得分:0)

我正在努力让所有注册用户从openfire进入我的应用程序。我尝试了上述链接中的所有方法,但没有帮助我! 经过多次尝试后,我得到了一个获得所有注册用户的解决方案...... 这是代码:

- (void)getAllRegisteredUsers {

    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 addAttributeWithName:@"none" stringValue:@"ANY_ID_NAME"];
    [iq addAttributeWithName:@"both" stringValue:@"ANY_ID_NAME"];
    [iq addChild:query];
    [xmppStream sendElement:iq];
}

- (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq{

    NSXMLElement *queryElement = [iq elementForName: @"query" xmlns: @"jabber:iq:roster"];

    if (queryElement) {
        NSArray *itemElements = [queryElement elementsForName: @"item"];
        NSMutableArray *mArray = [[NSMutableArray alloc] init];
        for (int i=0; i<[itemElements count]; i++) {

            NSString *jid=[[[itemElements objectAtIndex:i] attributeForName:@"jid"] stringValue];
            [mArray addObject:jid];
        }
        NSLog(@"%@",mArray);
    }
    return YES;
}

这对我有用,希望它也适用于其他人...... :)