2011-03-27 23 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); 
}