Как реализовать регистрацию в Jabber?

418
31 января 2017, 21:13

Необходимо реализовать регистрацию в jabbere. Использую библиотеку Smack.

public void registration(String login, String password)
        Registration r = new Registration();
        PacketFilter filter = new AndFilter(new PacketIDFilter(r.getPacketID()));
        PacketCollector col = connection.createPacketCollector(filter);
        System.out.println(" Request: " + r.getChildElementXML());
        connection.sendPacket(r);
        IQ result = (IQ) col.nextResult();
        if (result.getType() == IQ.Type.RESULT) {
            System.out.println("OK response: " + result.getChildElementXML());
        } else {
            System.out.println("Error "+result.getType()+" response: " + result.getChildElementXML());
        }
}

получаю "OK response: "

<query xmlns="jabber:iq:register">    
    <instructions>You need a client that supports x:data and CAPTCHA to register</instructions>    
    <x xmlns="jabber:x:data" type="form">
          <instructions>Choose a username and password to register with this server</instructions>
          <field var="FORM_TYPE" type="hidden">
             <value>urn:xmpp:captcha</value>
          </field>
          <field label="User" var="username" type="text-single">
             <required />
          </field>
          <field label="Password" var="password" type="text-private">
             <required />
          </field>
          <field type="fixed">
             <value>If you don't see the CAPTCHA image here, visit the web page.</value>
          </field>
          <field var="captchahidden" type="hidden">
             <value>workaround-for-psi</value>
          </field>
          <field label="CAPTCHA web page" var="url" type="text-single"><value>http://jabber.kiev.ua:5000/captcha/679267850/image</value>
          </field>
          <field var="from" type="hidden">
             <value>jabber.kiev.ua</value>
          </field>
          <field var="challenge" type="hidden">
             <value>679267850</value>
          </field>
          <field var="sid" type="hidden">
             <value>j6yGe-0</value>
          </field>
          <field label="Enter the text you see" var="ocr">
             <required />
          </field>    
    </x>    
    <data xmlns="urn:xmpp:bob" /> 
</query>

Судя по-всему, теперь нужно послать серверу ту же xml'ку только с заполненными полями вместо required тегов (поля с логином, паролем и с ответом на каптчу). Вопрос, как послать ответ?

READ ALSO
Получаю пустой объект в контроллере spring из jsp формы

Получаю пустой объект в контроллере spring из jsp формы

Отправляю объект из jsp в spring конторллер

397
Как считать данные с интерфейса RS-485? [требует правки]

Как считать данные с интерфейса RS-485? [требует правки]

Мне нужно считать данные с интерфейса RS-485 по USB для Desktop-приложения на JavaУ кого какие идеи?

427
Ролик с youtube внутри Android-приложения

Ролик с youtube внутри Android-приложения

Как добавить ролик с YouTube, чтобы он проигрывался непосредственно внутри Android-приложения(Внутри интерфейса)

336
Что-то не так со мной или с задачей? [требует правки]

Что-то не так со мной или с задачей? [требует правки]

Вы решили запрограммировать летающего робота, который максимально быстро сможет пройти трехмерный лабиринтВам повезло, и у Вас есть план...

420