捕获XMPP相关错误的最有效方法是什么?我已经看到了XMPP documentation中可用错误的列表,但是实际上,如果我想从中使用有用的东西,我需要找到一种解析它们的方法,但是我遇到了麻烦,因为例如是一种错误类型:
<stream:error xmlns:stream="http://etherx.jabber.org/streams">
<conflict xmlns="urn:ietf:params:xml:ns:xmpp-streams"/>
</stream:error>
如果我尝试注册两个相同的完整JID,则会出现错误。
如果我尝试使用未知的凭证进行注册,那么我基本上会遇到三种相同的错误。
失败标签:
<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl">
<not-authorized/>
</failure>
IQ节:
<iq type="error" to="openfire.mysender.ru/afxdu5ciun">
<bind xmlns="urn:ietf:params:xml:ns:xmpp-bind">
<resource>123</resource>
</bind>
<error code="401" type="auth">
<not-authorized xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
</error>
</iq>
存在节:
<presence to="openfire.mysender.ru/afxdu5ciun" type="error">
<error code="401" type="auth">
<not-authorized xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
</error>
</presence>
在这种情况下,我发现我可以做一个正则表达式来捕获错误标签:
<error.*\/error>
...但这真的是要走的路吗?我永远不会用这种方式捕获第一个<stream:error>
和<failure>
标记,并且执行3个不同的regex表达式也感觉不是一种很好的编程习惯。