Difference between revisions of "IQ"
From JaWiki (Jabber/XMPP wiki)
(+RFC) |
(ну и примерчик вдогонку) |
||
Line 10: | Line 10: | ||
* result - ответ на успешно выполненный запрос типа "set" или "get"; | * result - ответ на успешно выполненный запрос типа "set" или "get"; | ||
* error - при запросе произошла ошибка. | * error - при запросе произошла ошибка. | ||
+ | |||
+ | == Пример == | ||
+ | Вот типичный пример взаимодействия с использованием IQ: запрос версии клиента. | ||
+ | |||
+ | * Запрос: | ||
+ | <iq id='22' | ||
+ | to='binary@jrudevels.org/Home' | ||
+ | type='get' | ||
+ | xml:lang='en'> | ||
+ | <query xmlns='jabber:iq:version'/> | ||
+ | </iq> | ||
+ | |||
+ | * Ответ: | ||
+ | <iq from='Binary@jrudevels.org/Home' | ||
+ | to='Binary@dur-dom.net/Home' | ||
+ | id='22' | ||
+ | type='result' | ||
+ | xml:lang='en'> | ||
+ | <query xmlns='jabber:iq:version'> | ||
+ | <name>Tkabber</name> | ||
+ | <version>0.9.9-SVN-20070328 (Tcl/Tk 8.4.13)</version> | ||
+ | <os>Gentoo Base System version 1.12.0_pre15 2.6.19-gentoo-r2</os> | ||
+ | </query> | ||
+ | </iq> | ||
+ | |||
+ | * Ответ в случае ошибки: | ||
+ | <iq from='Binary@jrudevels.org/Home' | ||
+ | to='Binary@dur-dom.net/Home' | ||
+ | xml:lang='en' | ||
+ | id='22' | ||
+ | type='error'> | ||
+ | <query xmlns='jabber:iq:version'/> | ||
+ | <error code='501' | ||
+ | type='cancel'> | ||
+ | <feature-not-implemented xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> | ||
+ | <text xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'>The feature requested is not implemented by the recipient or server and therefore cannot be processed.</text> | ||
+ | </error> | ||
+ | </iq> | ||
== Ссылки == | == Ссылки == | ||
RFC 3920 | RFC 3920 |
Revision as of 09:52, 10 April 2007
IQ (Info/Query) - особый вид станс, реализующий механизм типа "запрос-ответ". Интерпретация IQ-станс позволяет "сущности" сделать запрос и получить ответ от другой "сущности". Тип данных, передающихся в запросе или ответе определяет namespace дочернего элемента по отношению к IQ.
Для прослеживания пути запросов-ответов используется аттрибут "id", который является обязательным для IQ.
Типы IQ
Аттрибут "type", являющийся обязательным для IQ, определяет тип IQ:
- get - запрос информации или требований;
- set - передача требуемых данных, установка новых значений или замена существующих;
- result - ответ на успешно выполненный запрос типа "set" или "get";
- error - при запросе произошла ошибка.
Пример
Вот типичный пример взаимодействия с использованием IQ: запрос версии клиента.
- Запрос:
<iq id='22' to='binary@jrudevels.org/Home' type='get' xml:lang='en'> <query xmlns='jabber:iq:version'/> </iq>
- Ответ:
<iq from='Binary@jrudevels.org/Home' to='Binary@dur-dom.net/Home' id='22' type='result' xml:lang='en'> <query xmlns='jabber:iq:version'> <name>Tkabber</name> <version>0.9.9-SVN-20070328 (Tcl/Tk 8.4.13)</version> <os>Gentoo Base System version 1.12.0_pre15 2.6.19-gentoo-r2</os> </query> </iq>
- Ответ в случае ошибки:
<iq from='Binary@jrudevels.org/Home' to='Binary@dur-dom.net/Home' xml:lang='en' id='22' type='error'> <query xmlns='jabber:iq:version'/> <error code='501' type='cancel'> <feature-not-implemented xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> <text xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'>The feature requested is not implemented by the recipient or server and therefore cannot be processed.</text> </error> </iq>