2013-02-21 62 views
3

我正在开发我的第一个AIR应用程序(从PHP/Javascript移动过来),并且处于我想从应用程序发送一些数据返回到我的服务器上的PHP脚本的阶段。我有以下几点:AS3 AIR URLLoader POST

var url:String = "PHP URL HERE"; 
var request:URLRequest = new URLRequest(url); 

var requestVars:URLVariables = new URLVariables(); 
requestVars.test = "1234"; 

request.data = requestVars; 
request.method = URLRequestMethod.POST; 
request.contentType = "application/xml;charset=utf-8"; 

var urlLoader:URLLoader = new URLLoader(); 
urlLoader.dataFormat = URLLoaderDataFormat.TEXT; 
urlLoader.addEventListener(Event.COMPLETE, processSERPS, false, 0, true); 
urlLoader.load(request); 

我确实有在原来的服务器端的PHP脚本别的东西,但对于调试我只是改变了它转储请求阵列。

有了上面的代码就会简单地返回任何结果:

Array 
(
) 

但是,如果我改变请求方法获取:

request.method = URLRequestMethod.GET; 

我收到:

Array 
(
    [test] => 1234 
) 

告诉我的代码是正确的,它只是不发送邮件参数出于某种原因。

我只是改变代码来使用GET变量,但不幸的是我需要发送的数据太大,因此需要POST。

任何帮助表示赞赏!

+0

是不是PHP代码不同取决于是否提取POST或GET数据?所以我认为你的PHP代码只适用于GET – 2013-02-21 21:52:13

+0

不幸的是,PHP的这一部分是我自信的唯一部分。我在PHP中使用REQUEST,它应该显示GET或POST。即使我专门将其设置为回显POST变量,它也不会显示任何内容。 – KyleC 2013-02-21 22:16:52

+3

如果使用'request.contentType =“application/xml; charset = utf-8”;'删除该行,会发生什么情况?这看起来像POST数据给我的错误内容类型。 – nwellnhof 2013-02-21 23:13:18

回答

3

URLRequest.contentType对于:

如果数据属性的值是URLVariables对象,该值的contentType的 必须是应用程序/ x-WWW窗体-urlencoded。

这是默认值,所以只是删除你的任务应该这样做。

+0

谢谢!我最初并没有设置内容类型,而是在其他地方发布了一篇文章,其中有人将该类型设置为XML,并且它使得后值正确工作,因此我修改了它。出于某种原因(我责怪Windows 8),如果我将它留空,它不起作用,但将其设置为'application/x-www-form-urlencoded',并且后值通过。 – KyleC 2013-02-22 09:10:08