本文介绍了使用 AMF 连接发送弹性消息时出现不受支持的 AMF 版本错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用 AMF 连接 API 发送 AMF 消息,但出现以下错误,如下所示.
I am trying to send AMF message using AMF Connection API but getting following error as shown below.
ClientStatusException
message: Unsupported AMF version
我为此使用了 blazeds-core-4.0.1.21287.jar.
I am using blazeds-core-4.0.1.21287.jar for this purpose.
以下是我的代码.
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);
感谢任何帮助.:)
推荐答案
我遇到了同样的问题.原因是服务器期望一个自包含的 AMF 数据包".
I had the same problem. The cause was that the server expected a "self-contained AMF packet".
参见 https://en.wikipedia.org/wiki/Action_Message_Format#AMF_self-contains_packet
这基本上意味着您需要在正常"AMF 消息前添加以下字节:
This basically means that you need to add the following bytes in front of the "normal" AMF message:
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
};
这篇关于使用 AMF 连接发送弹性消息时出现不受支持的 AMF 版本错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!