2014-11-07 1 views
0

Я пытаюсь реализовать XEP-0055, который поддерживается ejabbed, как показано здесь, в supported xepsXEP - 0055 с iOS и ejabberd?

Это моя просьба:

XMPPIQ *iq = [[XMPPIQ alloc] init]; 
[iq addAttributeWithName:@"type" stringValue:@"get"]; 
[iq addAttributeWithName:@"from" stringValue:@"[email protected]"]; 
[iq addAttributeWithName:@"to" stringValue:@"company.com"]; 
[iq addAttributeWithName:@"id" stringValue:@"search1"]; 
XMPPElement *query = [XMPPElement elementWithName:@"query"]; 
[query setXmlns:@"jabber:iq:search"]; 
[iq addChild:query]; 
[self.xmppStream sendElement:iq]; 

Я получаю такой ответ:

<iq xmlns="jabber:client" from="company.com" to="[email protected]/2834146151141475281662718" type="error" id="search1"> 
<query xmlns="jabber:iq:search"/> 
<error code="501" type="cancel"> 
<feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/> 
</error> 
</iq> 

Почему Я получаю функцию, не реализованную? Ссылка на официальный XEP description.

ответ

0

В ejabberd функция поиска делегируется субдомену, по умолчанию используется префикс vjud. Попробуйте отправить запрос поиска на vjud.company.com.

+0

Как я думал, ошибка была в атрибуте «to»! Теперь он работает, спасибо вам большое! Но где я могу найти все возможные сервисы, которые реализует ejabberd? Я имею в виду возможные значения «service» на service.company.com? – efimovdk

+0

Вы можете получить их, отправив запрос на дискотеки (см. XEP-0030) на «главный» сервер, то есть на 'company.com'. – legoscia

+0

Да, я делал это несколько раз, но я вижу модули erlang в ответе вроде «vcard-temp» или «carbonbons», но это модули. Должен ли я рассматривать модуль как услугу? Кроме того, я столкнулся с какой-то другой проблемой. Можете ли вы, пожалуйста, взглянуть на [link] (http://stackoverflow.com/questions/26803450/error-400-bad-request-with-xep-0055)? Я ценю вашу помощь! – efimovdk

Смежные вопросы