我想在用户点击动画片段时在同一个标签页上打开一个网页。我正在使用这种方法:
var url:String = "http://www.google.com";
var request:URLRequest = new URLRequest(url);
try {
navigateToURL(request);
} catch (e:Error) {
trace("Error occurred!");
}
但我不知道如何打开它发送POST变量。这可能吗?
答案 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也是如此。因此,建议始终包含“虚拟”主体,以确保使用正确的方法。