在android中使用Asmack时出现404错误

Posted

技术标签:

【中文标题】在android中使用Asmack时出现404错误【英文标题】:404 error while using Asmack in android 【发布时间】:2012-02-08 11:41:58 【问题描述】:

在我的应用程序中,我正在尝试使用 smack 库访问在服务器上创建的节点。当我在 java 中运行代码时,它不会给我任何错误。但是当我当时使用 android 项目尝试相同的操作时 lo-gin是成功的,但在访问节点时它给了我错误 404。

我在构建路径中添加了 Asmack jar 文件。请帮助我...我卡住了...

    public class ChatApplicationActivity extends Activity 
    /** Called when the activity is first created. */
    static XMPPConnection connection;
    TextView textView;
    @Override
    public void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

      textView=(TextView)findViewById(R.id.textView);

      try 
          ProviderManager.getInstance().addIQProvider("vCard", "vcard-temp", new VCardProvider()); 
            ConnectionConfiguration cc = new ConnectionConfiguration("192.168.1.113", 5222, "192.168.1.113");
            connection = new XMPPConnection(cc);
            connection.connect();
             SASLAuthentication.supportSASLMechanism("PLAIN", 0);
            connection.login("test","test");
            Log.i("debug", "login success");


    //      MySmackClient client=new MySmackClient();
    //        client.login("test1","test1");

          //client.displayBuddyList();

         // CreateNode node = new CreateNode(connection);
         subNode("test@eze-dem-113","testNode5");
         // String talkTo = br.readLine();

          System.out.println("-----");
        //  System.out.println("All messages will be sent to " + talkTo);
          System.out.println("Enter your message in the console:");
          System.out.println("-----\n");
     catch (XMPPException e) 

        e.printStackTrace();
    
    


    public void subNode(String JID,String nodeName)
    


     PubSubManager mgr = new PubSubManager(connection);
   //    String pubSubAddress = "pubsub." + connection.getServiceName();
   //    PubSubManager manager = new PubSubManager(connection, pubSubAddress);
       try 
          // Get the node
         // Node eventNode = manager.getNode("testNode5");  //i always get error here

          LeafNode node = (LeafNode)mgr.getNode(nodeName);

        node.addItemEventListener(new ItemEventCoordinator());

        node.subscribe(JID);
         catch (XMPPException e) 

            e.printStackTrace();
        
    

    class ItemEventCoordinator  implements ItemEventListener
    
       int track =0;
        public void handlePublishedItems(ItemPublishEvent items)
        
           System.out.println("Got Publish:"+track);
            PayloadItem<SimplePayload> item = (PayloadItem<SimplePayload>) items.getItems().get(0);

            SimplePayload payload = item.getPayload();

            String payloadData = payload.toXML();
            System.out.println(payloadData);

        
    

【问题讨论】:

与答案相关的问题:***.com/a/10881849/842697 【参考方案1】:

您使用的是什么版本的 Smack。我不认为 asmack 正在维护,所以它可能与 Smack 不同步。

一个建议是改变

 PubSubManager mgr = new PubSubManager(connection);

对于您已注释掉的行

 String pubSubAddress = "pubsub." + connection.getServiceName();
 PubSubManager manager = new PubSubManager(connection, pubSubAddress);

Smack 已更改为默认为该 pubsub 地址,asmack 可能没有该更改。如果您使用更显式的构造函数,它将在两种环境中保持一致。

【讨论】:

对于 googlecode 上的 aSmack 的替代品,另请参阅这个问题 ***.com/questions/4769020/…

以上是关于在android中使用Asmack时出现404错误的主要内容,如果未能解决你的问题,请参考以下文章

from.createForm() 在使用 asmack for android 时产生错误

在生产环境中使用 Rails 7 中的 importmaps 时出现 404 错误

在 TextBlob 中使用翻译功能时出现“HTTPError:HTTP 错误 404:未找到”

使用 aSmack 为 XMPP 群聊创建 MUC 房间时出现 ClassCastException

Flask:当我尝试访问索引时出现错误 404

Spring Social - facebook登录时出现404错误