从发送POST变量的闪存(AS3)打开网页

时间:2011-12-11 18:35:23

标签: flash actionscript-3 post

我想在用户点击动画片段时在同一个标​​签页上打开一个网页。我正在使用这种方法:

var url:String = "http://www.google.com";
var request:URLRequest = new URLRequest(url);
try {
  navigateToURL(request);
} catch (e:Error) {
  trace("Error occurred!");
}

但我不知道如何打开它发送POST变量。这可能吗?

3 个答案:

答案 0 :(得分:10)

是的,可以通过在URLRequest上指定POST作为方法,并使用flash.net.URLVariables作为变量。这是文档中的示例:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/URLRequest.html

package {
    import flash.display.Sprite;
    import flash.net.navigateToURL;
    import flash.net.URLRequest;
    import flash.net.URLRequestMethod;
    import flash.net.URLVariables;

    public class URLRequest_method extends Sprite {

        public function URLRequest_method() {
            var url:String = "http://www.[yourDomain].com/application.jsp";
            var request:URLRequest = new URLRequest(url);

            var variables:URLVariables = new URLVariables();
            variables.exampleSessionId = new Date().getTime();
            variables.exampleUserLabel = "guest";
            request.data = variables;
            request.method = URLRequestMethod.POST;

            navigateToURL(request);
        }
    }
}

答案 1 :(得分:1)

关于上述“子问题”:

  

由于某种原因,vars是使用GET而不是POST发送的   想法?

如果您像我一样偶然发现这篇文章,那么帖子AS3 POST Request sending as a GET可能会有所帮助。 基本思路是:不要让 request.data 变为空/ null。只需添加“虚拟”或“不显眼”的东西(从服务器的角度来看),如 request.data =“\ r \ n”;这应该可以防止Flash运行时使用“GET”覆盖“POST”请求。它对我有用(感谢我的服务器端应用程序。足够强大,可以很好地处理以空参数开头的空字符串和空值的查询字符串。)

答案 2 :(得分:0)

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