首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不支持AMF版本

不支持AMF版本
EN

Stack Overflow用户
提问于 2013-10-30 16:17:19
回答 1查看 2.1K关注 0票数 4

我遇到了以下例外情况:

代码语言:javascript
复制
[BlazeDS] Unsupported AMF version 4,660. 
flex.messaging.MessageException: Unsupported AMF version 4,660. 
at flex.messaging.io.amf.AmfMessageDeserializer.readMessage(AmfMessageDeserializer.java:93) 
at flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:114) 
at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:274) 
at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:377) 

我正在使用版本3.0.0.544 of BlazeDS,虽然我发现有多个帖子在讨论升级到版本3.2以解决类似的问题,但我认为这不是解决问题的正确方法。我发现的那些关于看到不受支持的版本1的文章。当我看“放到3.2 of BlazeDS中的修复”时,它看起来就像版本1 is converted to 0 (AMF1 to AMF0)。对于0, 1 and 3 (AMF0, AMF1 and AMF3 respectively)之外的任何其他版本,都会引发上述异常。

有人知道是什么导致了这一异常吗?(我并不是说BlazeDS抛出了一个异常,我明白了。)我要问的是为什么是4660版本,而不是0或3。

EN

回答 1

Stack Overflow用户

发布于 2014-01-09 01:13:13

你看过源代码管理中Blazeds的最新版本了吗?

我看了一下代码,在我看来,这就像是他们代码中的一个bug。再往下看一看,看看LOOK_HERE。在我看来这种情况是不可能的?为什么不下载这段代码并将其添加到您的项目中,注释掉这个条件,看看会发生什么。

下面的代码来自AmfMessageDeserializer.java

代码语言:javascript
复制
int version = amfIn.readUnsignedShort();

        // Treat FMS's AMF1 as AMF0.
        if (version == MessageIOConstants.AMF1)
            version = MessageIOConstants.AMF0; 

// <LOOK_HERE>
if (version != MessageIOConstants.AMF0 && version != MessageIOConstants.AMF3)
        {
            //Unsupported AMF version {version}.
            MessageException ex = new MessageException();
            ex.setMessage(UNSUPPORTED_AMF_VERSION, new Object[] {new Integer(version)});
            ex.setCode(CODE_VERSION_MISMATCH);
            throw ex;
        }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19688254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档