使用Smack API注册XMPP返回错误请求-修改



我正在尝试使用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中的数据包丢失,因为客户端尚未通过身份验证。希望这能帮助到别人!!

最新更新