We were using a Java XMPP client with smack version 3.3.1 to communicate with an iOS client built with Robbiehanson XMPP Framework. The XMPP server used for this communication is Openfire-4.0.4.
When we tried to upgrade the Java client with the latest smack libraries**(Smack-4.4.2)** we were stuck with an Unparsable Exception (Note: There is no change in the iOS client).
We are able to login in XMPP with the Java client and send XMPP messages to the iOS client. The iOS client also receives the message successfully.
While trying to send an XMPP message(in XML format) from iOS client to Java client, that message stanza is received in Openfire server. But it is throwing an Unparsable exception in Java client. Because of this we could not receive the message in the Java client.
The input xml message given in iOS client:
<Sample>Test</Sample>
Received message in Openfire server:
<message type="chat" to="user1@192.168.1.14/Smack"><body><Sample>Test</Sample></body></message>
Exception in Java client:
[xmppengine.connection.XmppConn$1] [50]: Unparsable Exception :
org.jivesoftware.smack.xml.XmlPullParserException: Non-empty element tag not followed by text, while Mixed Content (XML 3.2.2) is disallowed
at org.jivesoftware.smack.util.PacketParserUtils.parseElementText(PacketParserUtils.java:236)
at org.jivesoftware.smack.provider.BodyElementProvider.parse(BodyElementProvider.java:34)
at org.jivesoftware.smack.provider.BodyElementProvider.parse(BodyElementProvider.java:29)
at org.jivesoftware.smack.provider.Provider.parse(Provider.java:53)
at org.jivesoftware.smack.util.PacketParserUtils.parseExtensionElement(PacketParserUtils.java:834)
at org.jivesoftware.smack.util.PacketParserUtils.parseMessage(PacketParserUtils.java:186)
at org.jivesoftware.smack.util.PacketParserUtils.parseStanza(PacketParserUtils.java:111)
at org.jivesoftware.smack.AbstractXMPPConnection.parseAndProcessStanza(AbstractXMPPConnection.java:1448)
at org.jivesoftware.smack.tcp.XMPPTCPConnection.access$1000(XMPPTCPConnection.java:130)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:969)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$700(XMPPTCPConnection.java:913)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:936)
at java.base/java.lang.Thread.run(Thread.java:834)
Used the Smack’s UnparseableStanza.getContent() method to get received content in Java client:
<Sample xmlns='jabber:client'>Test</Sample></body></message>
Seems like the message from the iOS client reaches openfire server and the Java client could not be able to parse it.
Help us resolve this issue. Thanks in advance.