AS3 URLRequest POST仅在HTML包装器中编译时有效

时间:2013-05-30 19:11:13

标签: actionscript-3 flex urlrequest

我尝试使用以下代码将带有数据的POST请求发送到另一个域:

_snapshot_id = 1369022400;
var urlRequest:URLRequest = new URLRequest("https://fuzzykittens/radar");
urlRequest.method = URLRequestMethod.POST;
urlRequest.contentType = "application/x-www-form-urlencoded";

//set variables for post
var postVars:URLVariables = new URLVariables();
postVars.snapshot = String(_snapshot_id);
urlRequest.data = postVars;

//initialize weather proccess request
weatherProcRequest = new URLLoader(urlRequest);

weatherProcRequest.addEventListener(Event.COMPLETE,
    weatherProcRequest_CompleteHandler);
weatherProcRequest.addEventListener(IOErrorEvent.IO_ERROR,
    weatherProcRequest_ErrorHandler);
weatherProcRequest.addEventListener(SecurityErrorEvent.SECURITY_ERROR,
    weatherProcRequest_ErrorHandler);

weatherProcRequest.load(urlRequest);

当我将flex编译器设置为使用HTML包装器时,请求有效。当我不使用包装器时,请求会抛出错误#2032。我认为它没有发送快照ID,但我不知道为什么。

在html包装器中调试时,请求是否会发送数据有明显的原因,并且在html包装器外调试时无法执行此操作?

fuzzykittens有一个带有

的crossdomain.xml
<allow-access-from domain="*" secure="false"/>

1 个答案:

答案 0 :(得分:2)

我发现了这个问题。 Adobe非常简短地提到了URLRequest的livingoc:

中的这个警告
  

注意:如果在Flash Player中运行且引用的表单没有正文,则Flash Player会自动使用GET操作,即使该方法设置为URLRequestMethod.POST也是如此。因此,建议始终包含“虚拟”主体,以确保使用正确的方法。

当我刚刚在没有正文的情况下运行SWF时,快照ID未作为post var发送,因此服务器响应不同。

这绝对不是我想要的答案,但知道发生了什么感觉很好。感谢您的评论。