Difference between revisions of "IQ"

From JaWiki (Jabber/XMPP wiki)
Jump to: navigation, search
(+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>

Ссылки

RFC 3920