Я создаю приложение для Android, которое отправляет IQ на компонент XMPP, используя Smack.
Типичный запрос будет выглядеть так:
<iq to='component.localhost' id='123'>
<query xmlns='example:bar' extraAttribute='blaz'>
<extraElement>elementText</extraElement>
</query>
</iq>
Я создал класс Java, который расширяет IQ:
public class CustomIQ extends IQ {
public final static String childElementName = "query";
public final static String childElementNamespace = "example:bar";
...
Я также создал и зарегистрировал провайдера
public static class Provider extends IQProvider {
@Override
public Element parse(XmlPullParser parser, int i) throws Exception {
...
Это очень хорошо работает для моих случаев использования.
Проблема возникает, когда мне нужно проанализировать результат, который включает в себя ответ об ошибке:
<error code="503" type="cancel">
<service-unavailable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
</error>
Это разрывает мое соединение, и я попытался вызвать исключение в методе Provide.parse
, и это, похоже, не работает. Аналогично, вызов Stanza.getError
также возвращает ноль. Чего мне не хватает?