2013-02-21 80 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