日期:2014-05-20  浏览次数:20881 次

如何使用 XMMP 协议与 openfire交互
<?xml version='1.0'?>
<stream:stream
to='example.com'
xmlns='jabber:client'
xmlns:stream='http://etherx.jabber.org/streams'
version='1.0'>

看了一下 关于XMMP协议。。。
客户端 这样发送给 服务器 然后服务器给的回复是

<?xml version='1.0'?>
<stream:stream
from='example.com'
id='someid'
xmlns='jabber:client'
xmlns:stream='http://etherx.jabber.org/streams'
version='1.0'>
… encryption, authentication, and resource binding ...


现在用的是建立了个TCP连接。。。然后发送 得到的回复是
 HTTP/1.1 400 Bad Request

问题。。。
1.
<?xml version='1.0'?>
<stream:stream
to='example.com' //这里需要写的是??
xmlns='jabber:client' //这里需要写的是??固定格式??
xmlns:stream='http://etherx.jabber.org/streams'//这里需要写的是??固定格式??
version='1.0'>

------解决方案--------------------
to='example.com' 这个是服务器地址啊
xmlns='jabber:client' 这个是命名空间,表示你发的是何种消息
openfire启动的时候add了很多listener
接到xml消息后会运行一个parse方法,根据你的xmlns是什么,然后构建对应的bean,
再创建reply bean
然后reply bean to xml,再调send方法
就是两端各有一个bean和xml的相互转化,构成一个协议
如果要扩展协议,就自己定义新的命名空间,注册一下监听,新写toxml()和parse()
可以参考一下smack包的IQ扩展方法