5

当我执行以下代码时:

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

4

2 回答 2

8

啊,我想我找到了答案,看来您还必须指定一个正文,否则它仍会作为 GET 请求从他们的文档中发送:

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

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

于 2012-10-08T02:41:27.163 回答
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');
});
于 2012-10-08T05:32:08.123 回答