若想直接用java来访问BlazeDS后台的服务,可以用BlazeDS中的AMFConnection类。这个类在3.1.0.2602版本上才有。
AMFConnection支持HTTP和HTTS, 并会自动记录cookie
一、 基本的使用
final String URL = "http://127.0.0.1/project-web/messagebroker/amf";
AMFConnection connection = new AMFConnection();
try {
connection.connect(URL);
User user = getUserFromSomewhere();
connection.call("userService.createUser", user);
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
connection.close();
}
二、 AMFConnection连接过程
1. 建立连接、设置请求头及初始化请求环境
建立连接
URL raw = new URL(url);
urlConnection = (HttpURLConnection)urlObject.openConnection();
urlConnection.setDoOutput(true);
设置cookie和请求头
--setHttpRequestCookieHeader(); cookies to request
--httpRequestHeaders 设置时urlConnection的requestProperty
--Content-Type ->application/x-amf
设置请求环境:
actionContext = new ActionContext();
2. 发起请求
根据请求的命令和参数发出请求、按AMF3协议写入流、解析cookie, 按AMF解析返回流、返回结果
重要的方法是:
call(String command, Object ... arguments)
发出请求:
//构建请求信息(0-amf0 3-amf3)
ActionMessage requestMessage = new ActionMessage(getObjectEncoding());
MessageBody amfMessage = new MessageBody(command, responseURI, arguments);
requestMessage.addBody(amfMessage);
// Setup for AMF message serializer
actionContext.setRequestMessage(requestMessage);
ByteArrayOutputStream outBuffer = new ByteArrayOutputStream();
AmfMessageSerializer amfMessageSerializer = new AmfMessageSerializer();
amfMessageSerializer.initialize(serializationContext, outBuffer, amfTrace)
amfMessageSerializer.writeMessage(requestMessage);
outBuffer.writeTo(outputStream);
outBuffer.flush();
outBuffer.close();
解析返回流:
urlConnectionInputStream = new BufferedInputStream(inputStream);
// Mark the first 2 bytes so that the stream can be reset in case it
// contains non-AMF data.
urlConnectionInputStream.mark(2);
ActionMessage message = new ActionMessage();
actionContext.setRequestMessage(message);
MessageDeserializer deserializer = new AmfMessageDeserializer();
deserializer.initialize(serializationContext, urlConnectionInputStream, amfTrace);
deserializer.readMessage(message, actionContext);
Object result = null;
for (MessageBody msg : (ArrayList<MessageBody>)message.getBodies())
{
String targetURI = msg.getTargetURI();
if (targetURI.endsWith(MessageIOConstants.RESULT_METHOD))
{
result = msg.getData();
}
else if (targetURI.endsWith(MessageIOConstants.STATUS_METHOD))
{
String exMessage = "Server error";
result = exMessage;
}
}
分享到:
相关推荐
flex插件安装;flex与java--Blazeds学习(配置)详解。
基于Java_BlazeDS_Flex_服务器消息推的聊天室 了解BlazeDS推送机制,flex调用java web BlazeDS的过程 服务器推,摒弃ajax的轮询,减轻服务器压力!
Flex技术本身和Java就有很强的关联性,它提供了一个基于Eclipse的IDE和BlazeDS.BlazeDS是个基于服务端的Java远程调用和Web消息的一个开源的技术。有许多应用都是以Java为后端处理的。Flex用于前端。由于Java和Flex...
flex+java+blazeds配置最终版
想要FLex与Java实现交互,blazeds是一个很好的开源小插件
flex使用BlazeDS远程调用java例子.
flex与java通过BlazeDs进行交互
flex使用blazeds与java通信配置说明,包括java使用spring框架,blazeds调用spring bean
Flex+JAVA+BlazeDS开发环境配置(Java工程和Flex工程独立).doc
JAVA通过BlazeDS与FLEX通信 BlazeDS.zip java项目,使用MYECLIPSE导入 FlexJavaServer.fxp FLEX项目,使用FLASHBUILDER4.5导入
Flex与Java通信采用blazeDS的方式的例子,源程序,helloworld
RT 已经含有了blazeDs.war FlashBuilder4 Tomcat6下测试通过~ 先启动后台服务 http://localhost:8080/Flex4JavaDemo/TickCacheServlet?cmd=start http://localhost:8080/Flex4JavaDemo/message.html
使用BlazeDS实现flex与java 整合 使用BlazeDS实现flex与java 整合 flex+java
BlazeDS工具实现Flex与JAVA通信,一个原始入门的实例。
Flex和Java通信的第三方工具blazeds
最简单的BlazeDS实现flex与java通信..无积分下载...最简单的BlazeDS实现flex与java通信..无积分下载...最简单的BlazeDS实现flex与java通信..无积分下载...最简单的BlazeDS实现flex与java通信..无积分下载...最简单的...
说明: 前台--Flex 后台--Java (JPA,Spring) 前台框架--PureMVC Http协议--BlazeDS 做的例子,好东西,欢迎下载 可能很简单,但是内容很全,下一步加入Struts2.0
Flex + blazeds + Java推送Demo 本例实现由Flex一端客户端发送消息, 然后由Java端在发布到所有订阅的其它Flex端. 里面有说明与源码, 还有一个直接放到Tomcat里面的直接发布的项目 小编使用工具 eclipse3.5 flex sdk...
blazeds java服务器,用AMF实现flash与后台高效通信
NULL 博文链接:https://maidoudao.iteye.com/blog/771375