Ошибка 404 при использовании Asmack в Android - PullRequest
1 голос
/ 08 февраля 2012

в моем приложении я пытаюсь получить доступ к узлу, созданному на сервере, используя библиотеку smack. Когда я запускаю код в java, он не выдает никакой ошибки. Но когда я пытаюсь сделать то же самое с помощью проекта Android в то время, я вижу успешно, но при доступе к узлу выдает ошибку 404.

Я добавил JAR-файл Asmack в путь сборки. Пожалуйста, помогите мне ... Я застрял ...

    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);

        }
    }
}

1 Ответ

0 голосов
/ 08 февраля 2012

Какую версию Smack вы используете. Я не думаю, что asmack поддерживается, поэтому он, вероятно, не синхронизирован с самим Smack.

Одно предложение было бы изменить

 PubSubManager mgr = new PubSubManager(connection);

для строк, которые вы закомментировали

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

Smack был изменен по умолчанию на этот адрес pubsub, asmack, вероятно, не имеет этого изменения. Если вы используете более явный конструктор, он будет согласованным в обеих средах.

...