URLRequest / URLLoader将POST请求自动转换为GET

时间:2012-10-08 02:25:58

标签: actionscript-3 flex http

当我执行以下代码时:

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请求。

2 个答案:

答案 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');
});