我正在构建一个使用Smack将IQ发送到XMPP组件的Android应用。
典型请求如下所示:
<iq to='component.localhost' id='123'>
<query xmlns='example:bar' extraAttribute='blaz'>
<extraElement>elementText</extraElement>
</query>
</iq>
我已经创建了扩展IQ的java类:
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
也会返回null。我想念什么?