2011-06-27 10 views
0

私はフレックスアプリケーションで作業しています。同期メソッドでデータを呼び出す必要があります。いくつかの調査の後、私はajaxと外部インターフェイスを使用するadobeのコードを見つけました。すごいね。ajaxサーブレットへのPOST:nullパラメータ

the code from adobe

私はGETメソッドを使用してデータを送信、サーブレットは、パラメータやプリント一部に関する情報を(チェックする)をお読みください。しかし、POSTメソッドでデータを送信すると、サーブレットはリクエストを受信しますが、パラメータは消えてしまいます。

例:

SERVLET - GET

System.out.println("recieved GET"); 
Map attrib = request.getParameterMap(); 
System.out.println("parameters: " + request.getParameterMap().size()); 
for(Object key: attrib.keySet()){ 
    System.out.println("key: "+key.toString() +" - "+attrib.get(key)); 
} 

SERVLET - POST

System.out.println("recieved POST"); 
Map attrib = request.getParameterMap(); 
System.out.println("parameters: " + request.getParameterMap().size()); 
for(Object key: attrib.keySet()){ 
    System.out.println("key: "+key.toString() +" - "+attrib.get(key)); 
} 

FLEX GET METHOD

var ajax:Ajax = new Ajax(DATABASEURL + "?username=test); 
ajax.requestType = AjaxRequestType.GET; 
ajax.async = false; 
var result:String = ajax.send(); 
recieved GET 
parameters: 1 
key: username - [Ljava.lang.String;@4977e2 

FLEX POST METHOD

var ajax:Ajax = new Ajax(DATABASEURL); 
ajax.requestType = AjaxRequestType.POST; 
ajax.async = false; 
var result:String = ajax.send("username='test'"); 

サーブレットによって印刷:

recieved POST 
parameters: 0 

何が問題になっていますサーブレットによって印刷されましたか?

リクエストが送信された場合、なぜ今のパラメータはありませんか?

誰かが私を助けることができれば、それはすばらしいことです。私はGoogleでそれほど多くのことを探しているので、Googleが私を迷惑メールとしてブロックする可能性があるからです。

編集:ウェルカムは印刷できませんか?だから...

+1

なぜ同期要求が必要ですか?私はこの方法でJavaScriptを使用しようとしていると思うが、Flashアプリケーションは問題を求めているだけだ。 – JeffryHouser

+0

アプリケーションは、サーブレットからデータをロードする必要があります。 httpServiceオブジェクトは詳細を除いて完全に行います....結果はresultイベントから来たものです。したがって、このhttpServiceを使用するこのクラス(データベース)を使用するClass(データ)はnullオブジェクトを受け取り、このクラス(データベース)が結果を受け取ると、それは遅すぎます。クラス(データ)はすでに結果を取得しています。とにかく結果は間違っていますが、結果は間違いです。 同期的に呼び出してこの問題を解決します。この関数は真の値を返します。 – blaazzze

+0

何をお話しますか?フロントエンドで重大な意味を持たずに同期要求を行うことは不可能です。バックエンドサービスへの同期呼び出しを必要とする理由はありません。私はあなたがしなければならないことは、あなたがしようとしているもの(まだ理解していない)のためのより良いアーキテクチャを作成することだと思っています... –

答えて

-1

問題は見つかりました。 adobe pageのjavascriptコードです。それはかなりクールだ

recieved POST 
parameters: 1 
key: username - [Ljava.lang.String;@1cebc9f 

私は

xmlHttp.send(params); 

xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
xmlHttp.setRequestHeader("Content-length", params.length); 
xmlHttp.setRequestHeader("Connection", "close"); 

を追加しましたし、今、私はサーブレットから良い返事をしました

...そのバグはjavascriptでflexを使用していませんでしたが、requestReaderが不足していました。

+0

Flexでajaxを使用する理由はありません。ポイントは何ですか?! –