当我执行以下代码时:
var urlRequest:URLRequest = new URLRequest("http://somehost/with/some/path?andsomequerystring=true");
urlRequest.method = 'POST';
var urlLoader:URLLoader = new URLLoader(urlRequest);
urlLoader.addEventListener(Event.COMPLETE, function(event:Event):void{
trace('sweet');
});
由于存在查询字符串,它将我的显式POST请求转换为GET。如果我删除查询字符串(并作为POST主体的一部分序列化),它会成功发出相应的POST请求。有没有办法阻止它这样做?我的服务器要求使用查询字符串发出POST请求。
答案 0 :(得分:8)
啊我觉得我找到了答案,似乎你必须指定一个正文,否则它仍会作为GET请求从他们的文档发送:
注意:如果在Flash Player中运行且引用的表单没有正文, 即使方法是,Flash Player也会自动使用GET操作 设置为URLRequestMethod.POST。因此,建议使用 总是包括一个“虚拟”的身体,以确保正确的方法 使用
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/URLRequest.html#url
答案 1 :(得分:1)
这是因为你有你的网址。如果您想为POST方法设置变量,则需要使用URLVariables
。
var urlRequest:URLRequest = new URLRequest(YOUR_REQUEST_URL_HERE);
var variables:URLVariables = new URLVariables();
variables.andsomequerystring = true;
urlRequest.data = variables;
urlRequest.method = 'POST';
var urlLoader:URLLoader = new URLLoader(urlRequest);
urlLoader.addEventListener(Event.COMPLETE, function(event:Event):void{
trace('sweet');
});