я получил возможные поля с моего сервера:ошибка 400 плохой запрос с XEP-0055?
<iq xmlns="jabber:client" from="vjud.company.com" to="[email protected]/iPhone" id="search1" type="result"><query xmlns="jabber:iq:search">
<instructions>You need an x:data capable client to search</instructions>
<x xmlns="jabber:x:data" type="form">
<title>Search users in vjud.company.com</title>
<instructions>Fill in the form to search for any matching Jabber User (Add * to the end of field to match substring)
</instructions>
<field type="text-single" label="User" var="user"/>
<field type="text-single" label="Full Name" var="fn"/>
<field type="text-single" label="Name" var="first"/>
<field type="text-single" label="Middle Name" var="middle"/>
<field type="text-single" label="Family Name" var="last"/>
<field type="text-single" label="Nickname" var="nick"/>
<field type="text-single" label="Birthday" var="bday"/>
<field type="text-single" label="Country" var="ctry"/>
<field type="text-single" label="City" var="locality"/>
<field type="text-single" label="Email" var="email"/>
<field type="text-single" label="Organization Name" var="orgname"/>
<field type="text-single" label="Organization Unit" var="orgunit"/>
</x>
</query>
</iq>
Предположим, я хочу найти пользователя с JID [email protected]
Состоит запрос Виль выглядеть следующим образом:
XMPPIQ *iq2 = [[XMPPIQ alloc] init];
[iq2 addAttributeWithName:@"type" stringValue:@"set"];
[iq2 addAttributeWithName:@"from" stringValue:@"[email protected]"];
[iq2 addAttributeWithName:@"to" stringValue:@"vjud.company.com"];
[iq2 addAttributeWithName:@"id" stringValue:@"search1"];
XMPPElement *query2 = [XMPPElement elementWithName:@"query"];
[query2 setXmlns:@"jabber:iq:search"];
XMPPElement *user = [XMPPElement elementWithName:@"user"];
[user setStringValue:@"admin"];
[iq2 addChild:query2];
[query addChild:user];
строфа ошибка:
<iq xmlns="jabber:client" from="vjud.company.com" to="[email protected]/iPhone" type="error" id="search1">
<query xmlns="jabber:iq:search"/>
<error code="400" type="modify">
<bad-request xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
</error>
</iq>
Итак, в основном t вот 2 вопроса:
- Почему нет
</query>
элементов в ответе? - Это фактическая причина ошибки?
ответ -Сервера должен выглядеть this-
Больших благодаря пользователю @legoscia в запрос случая был составлен правильно, вы получите что-то вроде этого (уведомление <item>
элемента):
<iq xmlns="jabber:client" from="vjud.company.com" to="[email protected]/iPhone" id="search1" type="result»>
<query xmlns="jabber:iq:search"><x xmlns="jabber:x:data" type="result»>
<title>Search Results for vjud.company.com</title>
<reported>
<field type="text-single" label="Jabber ID" var="jid»/>
<field type="text-single" label="Full Name" var="fn»/>
<field type="text-single" label="Name" var="first»/>
<field type="text-single" label="Middle Name" var="middle»/>
<field type="text-single" label="Family Name" var="last"/><field type="text-single" label="Nickname" var="nick»/>
<field type="text-single" label="Birthday" var="bday»/>
<field type="text-single" label="Country" var="ctry»/>
<field type="text-single" label="City" var="locality»/>
<field type="text-single" label="Email" var="email»/>
<field type="text-single" label="Organization Name" var="orgname"/><field type="text-single" label="Organization Unit" var="orgunit»/>
</reported>
<item>
<field var="jid»>
<value>[email protected]</value>
</field>
<field var="fn"><value/></field>
<field var="last"><value/></field>
<field var="first"><value/></field>
<field var="middle"><value/></field>
<field var="nick"><value/></field>
<field var="bday"><value/></field>
<field var="ctry"><value/></field>
<field var="locality"><value/></field>
<field var="email"><value/></field>
<field var="orgname"><value/></field>
<field var="orgunit"><value/></field></item>
</x>
</query>
</iq>
Если совпадений нет, вы получите только <reported>
элемент с большим количеством полей. Возможно, вы захотите посмотреть и на this.
Спасибо! Я попробую это через 10 минут и отвечу. Кстати, что означает этот «скрытый» тип? – efimovdk
Чрезмерное копирование: сервер может отправить поле FORM_TYPE, чтобы указать, что он соответствует определенному стандарту, для которого означают поля поиска, и клиент должен отражать его, но теперь я вижу, что его нет в представленной форме сервером, поэтому нет причин включать его. Обновленный ответ. – legoscia
Хорошо, я тебя достал. Я попробую это позже, но спасибо вам очень много! Никто не мог ответить на предыдущие и текущие вопросы. – efimovdk