2011-01-23 39 views
1

我試圖通過POST發送數據,因爲通過GET發送的時間太長。通過AIR應用程序發送POST變量

下面是我使用的代碼...

pdfUrl.method = URLRequestMethod.POST; 
var vars:URLVariables = new URLVariables(); 
vars.html = data; 
pdfUrl.data = vars; 
navigateToURL(pdfUrl); 

的問題是,它總是發送如GET,並在vars.html數據太長,我的服務器來接收。

更糟糕的是,AIR似乎只能通過navigateToURL發送GET。

問題是,我需要打開一個新的瀏覽器窗口併發送POST數據,以便我的服務器上的腳本可以爲用戶創建一個PDF文件。

這有什麼解決方法?

回答

1

我不知道有什麼方法可以用POST請求打開一個新的瀏覽器窗口,GET是用來打開頁面的默認HTTP方法(這很有意義)。但是,另一種選擇是在AIR中使用簡單的HTTP請求發佈數據,一旦在AIR中獲得對POST請求的響應,就可以使用GET請求打開新的瀏覽器窗口。

所以:

  1. POST直接您的服務器從AIR。
  2. 讓您的服務器返回您可以在步驟3中使用的某種值。
  3. 使用navigateToURL打開一個新的瀏覽器窗口,並將您從步驟2獲得的值附加到URL。

這應該很好,我想。

0
 // Upload MP3-Byte-Array 
    private function uploadFile():void 
    { 
     var uploadURL:URLRequest = new URLRequest(); 
     uploadURL.url = "myfile.php?var1=var1Value&var2=var2Value"; 
     uploadURL.contentType = 'application/octet-stream'; 
     uploadURL.method = URLRequestMethod.POST; 
     uploadURL.data = heavyDataThatyouWantToPass; 
     var urlLoader:URLLoader = new URLLoader(); 
     urlLoader.addEventListener(Event.COMPLETE, completeHandler); 
     urlLoader.load(uploadURL); 
    } 
    private function completeHandler(event:Event):void 
    { 
     var loader:URLLoader = URLLoader(event.target); 
    } 

myfile.php將是這樣的:

<?php 
$var1 = $_REQUEST['var1Value'] ; 
$var2 = $_REQUEST['var2Value'] ; 
$heavyData = $GLOBALS[ 'HTTP_RAW_POST_DATA' ];?> 

希望這會幫助你。 :)