Получение ошибок с помощью настроенного asmack jar из beem

Так что я много пробовал в последние дни ...

Я создал сервер XMPP и клиент для своего компьютера без каких-либо проблем.

Затем я начал создавать клиент для Android и ... да ... я просто говорю, что просто не хочу читать больше ошибок ...

Я читал все о багах с XMPP, Android и PubSub. теперь я построил этот apk.

Я могу подключиться и оставаться в сети. Моя проблема в том, что я не могу построить Node.

Итак, это мой код:

`

package com.Eis.androidclient;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smackx.pubsub.LeafNode;
import org.jivesoftware.smackx.pubsub.PayloadItem;
import org.jivesoftware.smackx.pubsub.PubSubManager;
import org.jivesoftware.smackx.pubsub.PublishItem;
import org.jivesoftware.smackx.pubsub.SimplePayload;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;

public class Client extends Activity {

static {
    XMPPConnection.DEBUG_ENABLED = true;
}

ConnectionConfiguration connConfig = new ConnectionConfiguration(
        "192.168.0.100", 5222);
XMPPConnection connection = new XMPPConnection(connConfig);
String pubSubAddress = "pubsub."+ connection.getServiceName();
PubSubManager manager = new PubSubManager(connection,pubSubAddress);
SimplePayload payload = new SimplePayload("session",
        "pubsub:NewNode:session", "<sessionId>5678</sessionId>");
PayloadItem<SimplePayload> item = new PayloadItem<SimplePayload>(null,
        payload);



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    org.jivesoftware.smack.SmackAndroid.init(this);
    Button node = (Button)findViewById(R.id.button1);

    node.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            node();     
        }
    });





    Thread thread = new Thread(){
        public void run(){

            try {
                connection.connect();
                connection.login("tester", "tester");
            } catch (XMPPException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    };

    thread.run();
    // putting null for id means you let server generate id
    // you could use publish() for asynchronous call


}

public void node(){


    PubSubManager manager = new PubSubManager(connection);
    LeafNode myNode = null;

   // manager.discoverNodes("NewNode");
    try {
        manager.getNode("NewNode");
        System.out.println("found");
        manager.deleteNode("NewNode");
        System.out.println("delete");
    } catch(XMPPException e){
        System.out.println("nothing to do");
        e.printStackTrace();
    }
    try{
        myNode = manager.createNode("NewNode2");
        System.out.println("created");
    } catch (XMPPException e) {
        System.out.println("nothing created");
        e.printStackTrace();
    }




    // you could use publish() for asynchronous call

//      try {
//          myNode.send(item);
//          System.out.println("versendet");
//      } catch (XMPPException e) {
//          System.out.println("wird nicht gesendet");
//          e.printStackTrace();
//      }



}



@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

} `

Мое приложение работает на виртуальной машине 2.3.3, поэтому проблем с потоками быть не должно.

а вот логи ошибок

07:20:48 PM RCV (1079090656): <iq type="error" id="s1YUr-9" from="pubsub.nils-lappi" to="tester@nils-lappi/Smack"><pubsub xmlns="http://jabber.org/protocol/pubsub"><create node="NewNode2"/></pubsub><error code="409" type="cancel"><conflict xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq>

поэтому я не знаю, почему возникает конфликт, но, похоже, остальное в порядке

код ошибки из-за конфликта: at org.jivesoftware.smackx.pubsub.packet.SyncPacketSend.getReply(SyncPacketSend.java:53)

Надеюсь, кто-нибудь здесь сможет мне помочь...


person Nils Lütkefent    schedule 03.12.2012    source источник
comment
ааа просто забыл. Я думаю, что ошибка здесь manager.getNode(NewNode);   -  person Nils Lütkefent    schedule 03.12.2012


Ответы (1)


Узел NewNode2 уже существует, и вы пытаетесь создать его снова.

ПРИМЕЧАНИЕ. Вы можете упростить создание PubsubManager до

new PubsubManager(connection);

Использование pubsub в качестве имени службы фактически используется по умолчанию.

person Robin    schedule 04.12.2012
comment
Спасибо! Есть ли способ удалить и повторно отправить узел с другим пользователем? - person Nils Lütkefent; 06.01.2013