2011-03-27 84 views
2

我有下面的代码:获取Smackx PubSub的工作

 PubSubManager manager = new PubSubManager(connection, "pubsub.openfire.local"); 
     LeafNode myNode = (LeafNode) manager.createNode("NewNode", form); 

     SimplePayload payload = new SimplePayload("session", "pubsub:NewNode:session", "<sessionId>1234</sessionId>"); 


     // putting null for id means you let server generate id 
     PayloadItem<SimplePayload> item = new PayloadItem<SimplePayload>(null, payload); 

     // you could use publish() for asynchronous call 
     myNode.send(item); 

和我不断得到尝试发送节点值以下错误:在>

冲突(409) org.jivesoftware.smackx.pubsub.packet.SyncPacketSend.getReply(SyncPacketSend.java:53) at> org.jivesoftware.smackx.pubsub.packet.SyncPacketSend.getReply(SyncPacketSend.java:61) at> org.jivesoftware。 smackx.pubsub.PubSubManager.sendPubsubPacket(PubSubManager.java:324 ) 在> org.jivesoftware.smackx.pubsub.PubSubManager.sendPubsubPacket(PubSubManager.java:318) 在org.jivesoftware.smackx.pubsub.PubSubManager.createNode(PubSubManager.java:134) 在PubSubPublisher.main(PubSubPublisher。 java:33)

想了解如何进行调试或者继续前进的想法。谢谢。

回答

2

您尝试创建的节点已经存在。先致电getNode和/或deleteNode,然后致电createNode。将代码包装在try/catch区块中以处理可能抛出的XMPPException

LeafNode myNode = null; 
try{ 
    try{ 
    LeafNode existingNode = manager.getNode("NewNode"); 
    //exists, so delete 
    manager.deleteNode("NewNode"); 
    }catch(XMPPException e){ 
    //'getNode' threw an exception. 
    //so we know that the node did not exist 
    } 
    myNode = (LeafNode) manager.createNode("NewNode", form); 
}catch(XMPPException e){ 
    System.err.println(e); 
}