2

我有一个包含 Flash 对象的页面。在特定操作上,页面需要重定向到其他页面并发送一些数据(变量)。我正在结合使用 urlvariables 和 navigateToURL 来执行此操作。页面重定向并发送数据(变量)。

但问题是数据(变量)是在查询字符串中发送的(我的意思是这样的“ http://dummy.php/?first_name=xyz ”)。我正在使用 post 方法发送数据(变量)。我无法像查询字符串一样发送数据(变量)。

如何解决这个问题?

PS:我已经在下面写了所有代码......

var request:URLRequest = new URLRequest("http://dummy.php");
var vars:URLVariables = new URLVariables();
vars.first_name = 'xyz';
request.data = vars;
request.method = URLRequestMethod.POST;
navigateToURL(request, "_blank");
4

3 回答 3

2

我刚刚做了这个简单的测试,向 Twitter 的搜索 API 发送了一个 POST 请求(它似乎同时接受 GET 和 POST 请求)。正如您在随附的屏幕截图中看到的那样,浏览器的 URL 字段没有显示任何变量,而 Httpfox(您可以使用 Firebug、Chrome 的开发人员工具等)显示 POST 按预期传递的变量。您发布的示例代码是真正给您带来麻烦的代码吗?这是我使用的:

    // Create the POST request
var request:URLRequest = new URLRequest("http://search.twitter.com/search.json");
request.method = URLRequestMethod.POST;

// Create the variables object
var vars:URLVariables = new URLVariables();
vars.q = 'love';
vars.rpp = '5';
vars.include_entities = 'true';

// Attach variables to request object
request.data = vars;

// Open new window using the POST request
navigateToURL(request, "_blank");

Httpfox 屏幕截图显示 POST 变量按预期传递

于 2012-04-17T13:05:30.993 回答
1

当我执行以下操作时,我发生了这个错误:

var vars:URLVariables = new URLVariables();
vars.q = 'http://example.com/var1=7&var2=9';

获取样式变量显然不会自动进行 URL 编码,并导致 Flash 从设置的 POST 方法恢复为 GET 方法。我使用了 URL 编码和离开时的问题。

vars.q = encodeURIComponent('http://example.com/var1=7&var2=9');
于 2013-09-08T22:36:33.717 回答
1

您是否遵守施加的各种规则和限制?

发送 POST 请求时,contentType 和 data 属性的值必须正确对应。contentType 属性的值指示服务器如何解释数据属性的值。

如果 data 属性的值是 URLVariables 对象,则 contentType 的值必须是 application/x-www-form-urlencoded。如果 data 属性的值是任何其他类型,contentType 的值应该指示将要发送的 POST 数据的类型(即 data 属性值中包含的二进制或字符串数​​据)。对于 FileReference.upload(),请求的 Content-Type 自动设置为 multipart/form-data,并且 contentType 属性的值被忽略。

在 Flash Player 10 及更高版本中,如果您使用包含上传的多部分 Content-Type(例如“multipart/form-data”)(由 POST 正文中的“content-disposition”标头中的“filename”参数指示),POST 操作受应用于上传的安全规则的约束:必须执行 POST 操作以响应用户发起的操作,例如鼠标单击或按键。如果 POST 操作是跨域的(POST 目标与发送 POST 请求的 SWF 文件不在同一服务器上),则目标服务器必须提供允许跨域访问的 URL 策略文件。此外,对于任何多部分 Content-Type,语法必须有效(根据 RFC2046 标准)。如果语法似乎无效,

也许某些原因导致它默认返回 GET 请求。

于 2012-04-17T11:29:41.450 回答