首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用AMF连接发送flex消息时出现不支持的AMF版本错误

使用AMF连接发送flex消息时出现不支持的AMF版本错误
EN

Stack Overflow用户
提问于 2015-08-05 14:08:44
回答 1查看 882关注 0票数 1

我正在尝试使用AMF连接API发送AMF消息,但收到以下错误,如下所示。

代码语言:javascript
复制
ClientStatusException 
message: Unsupported AMF version

为此,我使用blazeds core-4.0.1.21287.jar。

以下是我的代码。

代码语言:javascript
复制
String url = "https://10.222.73.251:9443/vsphere-client/#";
        try {
            amfConnection.connect(url);
            System.out.println(amfConnection.getUrl());
        } catch (ClientStatusException cse) {
            System.out.println("Error connecting url: " + cse);
            return;
        }

        try {

            amfConnection.addHttpRequestHeader("Cookie",
                    "6250CED9FBC7D5894B79973DEC1503A6");
            amfConnection.addHttpRequestHeader("Content-type",
                    "application/x-amf");
            amfConnection.setAmfTrace(new AmfTrace());
            //amfConnection.setObjectEncoding(3);
            System.out.println(amfConnection.getObjectEncoding());

            CommandMessage cmsg = new CommandMessage();
            cmsg.setOperation(CommandMessage.CLIENT_PING_OPERATION);
            cmsg.setMessageId(UUIDUtils.createUUID());
            cmsg.setHeader(Message.FLEX_CLIENT_ID_HEADER, "706E5399-D81A-11C8-11F7-BE5F1940632E");
            cmsg.setHeader(Message.ENDPOINT_HEADER, "amf");
            AcknowledgeMessage ack = (AcknowledgeMessage)amfConnection.call(null, cmsg);

任何帮助都是非常感谢的。:)

EN

回答 1

Stack Overflow用户

发布于 2016-12-21 23:28:41

我也有同样的问题。原因是服务器期望一个“自包含的AMF包”。

请参阅https://en.wikipedia.org/wiki/Action_Message_Format#AMF_self-contained_packet

这基本上意味着你需要在“正常”的AMF消息前添加以下字节:

代码语言:javascript
复制
  byte[] header = 
  { 0x00, 0x03,       // version 
    0x00, 0x00,       // nr of "header-type-structures" to follow (none) 
    0x00, 0x01,       // nr of "message-type-structures" to follow (one)
    0x00, 0x04,       // target-uri-length
    0x6e, 0x75, 0x6c, 0x6c, // target uri "null" 
    0x00, 0x04,       // response uri length 
    0x6e, 0x75, 0x6c, 0x6c, // response uri "null" 

    ??, ??, ??, ??    // the length of the "normal" message, 32 bits
  };
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31824589

复制
相关文章

相似问题

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