2011-01-23 11 views
1

POST経由でデータを送信しようとしています.GET経由で送信するには時間がかかりすぎます。ここでAIRアプリケーション経由でPOST変数を送信する

は、私が使用しているコードは、問題は、それが常にGETとして送信し、vars.htmlのデータは私のサーバーは、受信するためには長すぎるということです...

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

です。

さらに悪いことに、AIRはnavigateToURL経由でGETしか送信できないようです。

この問題は、新しいブラウザウィンドウを開き、POSTデータを送信して、サーバー上のスクリプトでユーザーのPDFファイルを作成できるようにする必要があります。

これにはどのような回避策がありますか?

答えて

1

私は、POSTリクエストで新しいブラウザウィンドウを開く方法については気づいていません.GETはページを開くために使用されるデフォルトのHTTPメソッドです(本当に意味があります)。ただし、AIRで単純なHTTPリクエストを使用してデータをPOSTし、AIRでPOSTリクエストへの応答を取得した後は、GETリクエストを使用して新しいブラウザウィンドウを開くこともできます。

ので:AIRから直接サーバーへ

  1. POST。
  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' ];?> 

これはあなたを助けることを願っています。 :)

関連する問題