我正在尝试使用Smack API(4.1.5)AccountManager类createAccount方法注册用户。我得到了以下日志,请求似乎总是失败的坏请求。我该如何弄清楚这个请求出了什么问题?我尝试通过删除域和资源等来更改用户名,但结果仍然相同。字段的长度可能有问题吗。我也在这里读到了XEP0077http://xmpp.org/extensions/xep-0077.html但无法解决这个问题。
D/SMACK: SENT (0):
<iq to='xmpp.jp' id='w50y8-3' type='get'>
<query xmlns='jabber:iq:register'></query>
</iq>
D/SMACK: RECV (0):
<iq from='xmpp.jp' id='w50y8-3' type='result'>
<query xmlns='jabber:iq:register'>
<instructions>Choose a username and password to register with this server</instructions>
<username></username>
<password/>
</query>
</iq>
D/SMACK: SENT (0):
<iq to='xmpp.jp' id='w50y8-5' type='set'>
<query xmlns='jabber:iq:register'>
<username>test@xmpp.jp/SMACK</username>
<password>test123</password>
</query>
</iq>
D/SMACK: RECV (0):
<iq from='xmpp.jp' id='w50y8-5' type='error'>
<query xmlns='jabber:iq:register'>
<username>test@xmpp.jp/SMACK</username>
<password>test123</password>
</query>
<error code='400' type='modify'>
<bad-request xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
</error>
</iq>
W/System.err: org.jivesoftware.smack.XMPPException$XMPPErrorException: XMPPError: bad-request - modify
有人能帮助我了解如何诊断这些问题,以及如何找出上述请求的问题吗?
您需要通过https://www.igniterealtime.org/builds/smack/docs/4.1.5/javadoc/org/jivesoftware/smackx/iqregister/AccountManager.html#getAccountAttributes()并提供这些。
我在XMPPTCPConnectionConfiguration.setServiceName()中传递了不正确的服务名称,这导致IQRouter中的数据包丢失,因为客户端尚未通过身份验证。希望这能帮助到别人!!