Java J2ME BOSH客户端到ejabberd

Java J2ME BOSH客户端到ejabberd,java,java-me,xmpp,ejabberd,Java,Java Me,Xmpp,Ejabberd,我正在编写一个J2ME客户端,它必须通过BOSH连接到XMPP服务器。我使用的服务器是ejabberd 我还有另外两个应用程序通过BOSH成功连接到服务器。一个是flashxiff库,另一个是javascript strophe 我的J2ME代码设法完成所有工作,直到必须使用restart=true属性的body标记重新启动流为止 ejabberd服务器此时无法发回流启动消息,而是发送了一个内部服务器错误 我使用的java代码生成与上述两个库相同的消息。根据我在ejabberd代码中看到的,st

我正在编写一个J2ME客户端,它必须通过BOSH连接到XMPP服务器。我使用的服务器是ejabberd

我还有另外两个应用程序通过BOSH成功连接到服务器。一个是flashxiff库,另一个是javascript strophe

我的J2ME代码设法完成所有工作,直到必须使用restart=true属性的body标记重新启动流为止

ejabberd服务器此时无法发回流启动消息,而是发送了一个内部服务器错误

我使用的java代码生成与上述两个库相同的消息。根据我在ejabberd代码中看到的,stream restart BOSH消息和stream features消息分别发送以响应我的stream restart请求,同时从其他两个库发送

有人见过这种行为吗?我错过了什么

下面是波什对话相关部分的简短记录

[0][OUT] <body rid='1367396715' sid='fe67e7de6f99df688caa5b1977428f59a23bbb9b' xmlns='http://jabber.org/protocol/httpbind'><response xmlns='urn:ietf:params:xml:ns:xmpp-sasl'/></body>
[1][IN ] <body xmlns='http://jabber.org/protocol/httpbind'><success xmlns='urn:ietf:params:xml:ns:xmpp-sasl'/></body>
---SUCCESS!
Restarting stream
[1][OUT] <body rid='1367396716' sid='fe67e7de6f99df688caa5b1977428f59a23bbb9b' xmlns='http://jabber.org/protocol/httpbind' xml:lang='en' xmpp:restart='true' xmlns:xmpp='urn:xmpp:xbosh' to='test.wildeboom.com'/>
[0][IN ] <body xmlns='http://jabber.org/protocol/httpbind'/>
[1][IN ] <body type='terminate' condition='internal-server-error' xmlns='http://jabber.org/protocol/httpbind'/>
ejabberd日志文件具有以下流重新启动消息。请注意,它没有附加流功能。stream features消息单独排队,但无法发送。对于其他库,此消息附加了stream features元素

D(<0.741.0>:ejabberd_http_bind:927) : ===[BIND]prepare_response OutPacket: 
[{xmlstreamstart,
"stream:stream",
[{"version",
  "1.0"},
 {"xml:lang",
  "en"},
 {"xmlns",
  "jabber:client"},
 {"xmlns:stream",
  "http://etherx.jabber.org/streams"},
 {"id",
  "1974251422"},
 {"from",
  "test.wildeboom.com"}]}]

我认为你的rid号码有问题,因为你正在使用两个连接到波什的libes。我需要更多的解释来帮助你在这里输入使用strophe lib的js代码。很抱歉不清楚。斯特罗弗工作得很好。我在J2ME上使用的java代码导致了这个问题。