Java Smack XMPP 查看服务器响应

Posted

技术标签:

【中文标题】Java Smack XMPP 查看服务器响应【英文标题】:Java Smack XMPP view server response 【发布时间】:2014-02-05 14:38:01 【问题描述】:

嘿,我怎样才能显示来自 xmpp 服务器的每个响应?

我尝试发送消息,但很多消息在途中丢失了,所以我想检查服务器的响应。我正在使用 smack 3.3.1 发送到 facebook xmpp 端口。

DeliveryReceiptManager 和/或 MessageEventManager 不会显示任何内容,所以我想查看服务器响应的所有内容!

ConnectionConfiguration config = new ConnectionConfiguration("chat.facebook.com",5222);
config.setSASLAuthenticationEnabled(true);     
XMPPConnection connection = new XMPPConnection(config);

        try 
            //ESTA LINEA HACE QUE NO DE TIMEOUT
            SmackConfiguration.setPacketReplyTimeout(15000);
            XMPPConnection.DEBUG_ENABLED = true;
            SASLAuthentication.registerSASLMechanism("X-FACEBOOK-PLATFORM", SASLXFacebookPlatformMechanism.class);
            SASLAuthentication.supportSASLMechanism("X-FACEBOOK-PLATFORM", 0);
            connection.connect();
            String apiKey = "1234567";
            String accessToken = "";
            connection.login(apiKey, accessToken);

        catch (XMPPException e)
            e.printStackTrace();
        
        try 
            DeliveryReceiptManager deliveryReceiptManager = DeliveryReceiptManager.getInstanceFor(connection);
            deliveryReceiptManager.addReceiptReceivedListener(new ReceiptReceivedListener() 
                @Override
                public void onReceiptReceived(String s, String s2, String s3) 
                    System.out.println("REVEIVED RESPONCE");
                    System.out.println(s);
                    System.out.println(s2);
                    System.out.println(s3);
                
            );
            Chat chat = connection.getChatManager().createChat("1234567890@chat.facebook.com", new MessageListener() 
                @Override
                public void processMessage(Chat chat, Message message) 
                    if(message.getType() == Message.Type.chat)
                        System.out.println(chat.getParticipant() + " says: " + message.getBody());
                
            );
            Message msg = new Message();
            msg.setSubject("Invite");
            msg.setBody("blablabla");
            DeliveryReceiptManager.addDeliveryReceiptRequest(msg);
            //MessageEventManager.addNotificationsRequests(msg, true, true, true, true);

            chat.sendMessage(msg);
            try 
                Thread.sleep(10000);
             catch (InterruptedException e) 
                e.printStackTrace();
            

        catch (XMPPException e)
            e.printStackTrace();
        

        try 
            Thread.sleep(10000);
        catch (InterruptedException e) 
            e.printStackTrace();
        

【问题讨论】:

【参考方案1】:

Connection.DEBUG_ENABLED = true;

【讨论】:

然后调试窗口应该打开并显示所有活动(两种方式)。不会出现吗? 不,没有任何显示。是否应该有额外的调试输出?谢谢! 您使用的是哪个 IDE?

以上是关于Java Smack XMPP 查看服务器响应的主要内容,如果未能解决你的问题,请参考以下文章

无法通过 smack 连接到 XMPP 服务器:服务器没有响应

使用 smack 的 Android XMPP:服务器没有响应

无法使用 java 中的 smack 库使用 xmpp 服务器登录

XMPP 服务器给出错误“服务器没有响应”

无法使用教程“使用 Smack 实现基于 XMPP 的应用服务器的 Java 示例”

如何在 java 中使用 Smack XMPP 库处理 TLS 证书