2012-12-03 13 views
1

四處錯誤,所以我已經嘗試了很多最後的日子......使用asmack配置罐子從BEEM

我爲我的電腦一XMPP服務器和客戶端沒有任何問題。

比我開始創建Android和...是啊..我只是說,我只是不希望閱讀更多的錯誤客戶端..

我讀到與XMPP,Android和PubSub的錯誤所有的事情。現在我建立了這個apk。

我可以連接並保持在線狀態。我的問題是無法建立一個節點。

所以這是我的代碼:

`

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

希望這裏有人能幫助我...

+0

啊剛剛忘了。我認爲錯誤在這裏「manager.getNode(」NewNode「);」 –

回答

0

節點NewNode2已經存在,您正在嘗試再次創建它。

注意:您可以簡化您的PubsubManager的創建只是

new PubsubManager(connection); 

發佈訂閱作爲服務名稱的使用實際上是默認。

+0

謝謝!有沒有辦法刪除和重新發送一個節點與另一個用戶? –