Tag: smack

java.io.EOFException:没有更多可用数据 – 预期结束标记关闭开始标记

我正在使用xmpp开发聊天应用程序,根据我们的要求,我们有三个服务器Apache Tomcat 7,ejabbered 2.1.11和mysql 5.5, to run xmppbot on tomcat used below library -Smack-core-4.0.3.jar -smack-tcp-4.0.3.jar -xlightweb2.5.jar -xpp3-1.1.3.3.jar -xSocket-2.4.6.jar 使用上面的库我能够与ejabberd连接并能够使用我的登录ID和密码登录但是在登录连接的一段时间后自动关闭并且我正在低于堆栈跟踪 Sep 16, 2014 4:36:01 PM org.jivesoftware.smack.XMPPConnection callConnectionClosedOnErrorListener WARNING: Connection closed with error java.io.EOFException: no more data available – expected end tag to close start tag from line 1, parser stopped on END_TAG seen …… @1:1347 at […]

Smack 4.1在回复超时内无响应

我在我的Android应用程序中使用以下代码: Thread D= new Thread(new Runnable() { @Override public void run() { SmackConfiguration.setDefaultPacketReplyTimeout(10000); XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder() .setUsernameAndPassword(“admin”, “password”) .setServiceName(“192.168.0.200”) .setHost(“192.168.0.200”) .setPort(5223).setSecurityMode(SecurityMode.ifpossible) .build(); AbstractXMPPConnection conn2 = new XMPPTCPConnection(config); try { conn2.connect(); conn2.login(); Presence presence = new Presence(Presence.Type.unavailable); presence.setStatus(“Gone fishing”); // Send the packet (assume we have an XMPPConnection instance called “con”). conn2.sendStanza(presence); } catch (SmackException […]

如何使用java smack库连接XMPP bosh服务器?

我使用strophe.js在webapp上运行xmpp客户端,根据我的用例场景我必须快速切换到不同的页面 当前的方法并不安全,因为jid和密码在java脚本中是可见的,我正在寻找解决方案来实现安全性,尝试使连接时间(与bosh)更短,同时阅读“使用JavaScript和XMPP编程”一书jQuery“通过jake moffitt我遇到了一个解决方案,我上面的两个问题都是实现会话机制的元素。我们说我们可以使用strophe attach(jid,sid,rid)连接到现有连接,所以我需要SID和RID ,我可以从应用程序服务器获得! 本书给出了一个用户登录Web应用程序时自动连接到bosh服务器的示例,作者使用python中的Django项目实现它,因为我使用java作为服务器端语言我尝试使用java smcak-4.0实现相同的示例.3和smack-bosh-4.0.3但无法连接到bosh服务器(我使用ejabberd作为xmpp服务器) 我的代码如下 BOSHConfiguration config = new BOSHConfiguration(false,”192.168.0.106″,5280,”/http-bind/”,”192.168.0.106″); XMPPBOSHConnection xbc=new XMPPBOSHConnection(config); xbc.connect(); xbc.login(“admin”, “admin”); System.out.println(xbc.getConnectionID()); 堆栈跟踪 java.lang.ClassNotFoundException: org.xmlpull.v1.XmlPullParserFactory at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) at org.jivesoftware.smack.SmackConfiguration.processConfigFile(SmackConfiguration.java:352) at org.jivesoftware.smack.SmackConfiguration.processConfigFile(SmackConfiguration.java:347) at org.jivesoftware.smack.SmackConfiguration.(SmackConfiguration.java:155) at org.jivesoftware.smack.ConnectionConfiguration.(ConnectionConfiguration.java:67) 当我试图登录到波什服务器时,它每次都会失败,我不确定这里有什么问题可以解释一下吗? 我发现的另一件事是可以使用“xbc.getConnectionID()”获取会话标识符(SID)但是如何查找请求标识符? 任何有关上述问题的帮助都是适合的! 提前致谢!

使用smack API发送和接收消息

我已经在本地机器上设置了我的开放式火灾(jabber服务器),有两个用户testuser1和testuser2。使用Spark客户端,两个用户都可以毫无问题地进行聊天,这很不错。 openfire IP -192.168.1.65 我想使用smack API(3.3.0)发送和接收消息。 我已经编写了发送方代码来发送消息(使用testuser1)并在testuser2端接收到Spark客户端(带有testuser2)消息进行测试,但是当我尝试使用java代码接收发送方消息时,我无法接收这些发布消息。 Sender.java import org.jivesoftware.smack.Chat; import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.XMPPException; import org.jivesoftware.smack.packet.Message; import org.jivesoftware.smack.MessageListener; public class Sender { public static void main(String a[]) throws XMPPException, InterruptedException { XMPPConnection connection = new XMPPConnection(“192.168.1.65”); System.out.println(connection); connection.connect(); connection.login(“testuser1”, “test123”); Chat chat = connection.getChatManager().createChat(“testuser2@sameek”, new MessageListener() { public void processMessage(Chat chat, Message message) { // […]

使用asmack for android在XMPP数据包的Message标签中添加自定义属性?

我要收到的消息包。 Hello 我收到的消息包。 Hello 我有一个smack的源代码,这是包类。 任何人都可以帮我制作自定义数据包。 任何帮助修改源代码表示赞赏。 代码: public abstract class Packet { protected static final String DEFAULT_LANGUAGE = java.util.Locale.getDefault().getLanguage().toLowerCase(); private static String DEFAULT_XML_NS = null; /** * Constant used as packetID to indicate that a packet has no id. To indicate that a packet * has no id set this constant as the packet’s […]

如何使用Java的Smack API发送自定义XML数据包?

我正在使用Java中的Smack API连接到我的XMPP服务器。 我想发送一个这样的自定义消息包: hi C=”…” D=”…” 我猜我创建了我自己的Packet,它在它的toXML()方法中返回了这个XML。 但这似乎不起作用。 任何帮助,将不胜感激。

使用Smack 4.1的XMPP客户端在登录期间给出NullPointerException

我正在尝试使用Smack 4.1.0-rc3来实现连接到ejabberd xmpp服务器的java xmpp客户端。 我使用以下代码连接到服务器。 XMPPTCPConnectionConfiguration connConfig = XMPPTCPConnectionConfiguration .builder() .setServiceName(“example.com”) .setHost(“192.168.56.101”) .setPort(5222) .setCompressionEnabled(false) .setSecurityMode(SecurityMode.disabled) .setHostnameVerifier(new HostnameVerifier() { public boolean verify(String arg0, SSLSession arg1) { return true; } }) .setUsernameAndPassword(user, pass).build(); connection = new XMPPTCPConnection(connConfig); connection.connect(); connection.login(); 执行’connection.login()’时,我得到以下NullPointerException。 Exception in thread “main” java.lang.NullPointerException at org.jivesoftware.smack.util.stringencoder.Base64.encode(Base64.java:64) at org.jivesoftware.smack.util.stringencoder.Base64.encode(Base64.java:60) at org.jivesoftware.smack.util.stringencoder.Base64.encodeToString(Base64.java:42) at org.jivesoftware.smack.sasl.SASLMechanism.authenticate(SASLMechanism.java:199) at org.jivesoftware.smack.sasl.SASLMechanism.authenticate(SASLMechanism.java:169) at org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:236) […]

如何在订阅模式“两者”中添加名册

我正在使用smack 3.1.0,当我添加一个名册时,我无法获得“两者”的订阅。 谁能帮我? 下面是我的代码: Roster.setDefaultSubscriptionMode(Roster.SubscriptionMode.accept_all); Roster roster = connection.getRoster(); roster.createEntry(“buddy@test.com”,”me”,null) 代码执行后,我在openfire中观察到订阅是“到”

Smack 4在连接时抛出“SSLHandshakeException:ValidatorException:SunCertPathBuilderException”

对于我的xmpp堆栈的集成测试,我在localhost上设置了一个vysper服务器(0.7)。 现在我想在版本4.0.2中使用smack-core和smack-tcp连接到服务器。 问题: Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 由于smack 4 api已经发生了很大的变化,到目前为止发现的例子已经不能再使用了。 以前有人试过吗?