2015-12-21 2 views
0

Я пытаюсь зарегистрировать пользователя, используя метод класса AccountManager класса Smack API (4.1.5) AccountManager. Я получаю следующий журнал, и запрос, кажется, всегда терпит неудачу. Как я могу понять, в чем проблема с запросом? Я попытался изменить имя пользователя, удалив домен и ресурс и т. Д., Но все тот же результат. Может возникнуть проблема с длиной полей. Я также читал о XEP0077 здесь http://xmpp.org/extensions/xep-0077.html , но не смог разобраться в этой проблеме.Регистрация XMPP с помощью Smack API возвращает bad-request - изменение

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>[email protected]/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>[email protected]/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 

Может кто-то пожалуйста, помогите мне понять, как диагностировать такие проблемы и как выяснить, что случилось с вышеуказанной просьбой?

ответ

0

Необходимо определить необходимые атрибуты учетной записи через https://www.igniterealtime.org/builds/smack/docs/4.1.5/javadoc/org/jivesoftware/smackx/iqregister/AccountManager.html#getAccountAttributes() и предоставить их.

+0

Спасибо. Согласно http://xmpp.org/extensions/xep-0077.html#usecases-register. Если требуемая информация отсутствует, сервер должен отправить ответ на неприемлемый (406) ответ. Но я получаю 400. Но я все равно попробую, как вы предложили, и вернется с результатом. – GorillaCoder

+0

Я добавил эту строку Установить requiredAttrs = accountManager.getAccountAttributes(); И это вернулось с именем пользователя и паролем по мере необходимости. Я уже предоставил оба поля. – GorillaCoder

+0

В этом случае вы должны спросить сервер, то есть посмотреть на источник сервера, почему он возвращает bad-request. – Flow

0

Я пропустил неправильное имя службы в XMPPTCPConnectionConfiguration.setServiceName(), которое вызвало падение пакетов в IQRouter, поскольку клиент еще не аутентифицирован. Надеюсь, это поможет кому-то!

Смежные вопросы