在Flex / AS3中使用HTTPService在POST上取得进展

时间:2008-12-18 15:00:49

标签: flex actionscript-3 httpservice

我正在使用带有POST操作的HTTPService来提交Base64编码文件(取自应用程序中的位图数据),但我真的可以了解POST操作的进度(例如FileReference.upload) ())。

我不认为这是可能的,但如果是这样的话会很棒(通过任何方式,我都愿意改变我的设置来获得这个)。

3 个答案:

答案 0 :(得分:8)

不要使用HTTPService。使用URLRequest,URLLoader和URLVariables。

如果您使用HTTPService标记,请使用它并将其替换为填充了类似...的脚本标记。


private function forYou() : void{
     var req : URLRequest = new URLRequest("PUT YOUR URL HERE")
     var loader : URLLoader = new URLLoader();
     var params : URLVariables = new URLVariables();
     params.WHATEVER = WHATEVER YOU WANT IT TO BE;
     req.data = params;
     req.method = URLRequestMethod.POST;
     loader.addEventListener(ProgressEvent.PROGRESS, YOUR LISTENER FUNCTION NAME);
     loader.load(req);
}

将此函数名称分配给根标记的creationComplete属性。

如果您没有使用HTTPService标记,只需在您的动作脚本中获取HTTPService对象并使用上述代码。

答案 1 :(得分:0)

这对我来说非常适合使用REST Web服务:

http://code.google.com/p/as3httpclient/wiki/Links

Example

答案 2 :(得分:0)

HTTPService无法做到这一点。它唯一的事件是resultfaultinvoke(除activatedeactivate的非相关继承事件之外。

要获取有关上载过程的进度信息,服务器必须提供信息,这将需要在操作期间服务器和客户端之间的通信方式,这不适用于常规HTTP POST操作。

一个选项可能是在服务器上创建一个对象,只要服务器开始从客户端接收POST数据,该对象就会被实例化。然后它会跟踪进度并将该数据公开给服务器端应用程序的其余部分。然后,您的客户端可以启动一个轮询系统,该系统将请求该特定变量的值。

虽然看起来像是一种牵强附会的选择......