4

次のコードのURLローダーがあります。

public function getUploadURL():void {   
    var request:URLRequest = new URLRequest();

    var url:String = getPath();
    // Adds time to prevent caching
    url += "&time=" + new Date().getTime(); 

    request.url = url;
    request.method = URLRequestMethod.GET;

    _loader = new URLLoader();
    _loader.dataFormat = URLLoaderDataFormat.TEXT;
    _loader.addEventListener(Event.COMPLETE, getBaseURL);
    _loader.addEventListener(IOErrorEvent.IO_ERROR, onGetUploadURLError);
    _loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, getHttpStatus);

    _loader.load(request);
}

私の問題は、このリクエストが間違っている可能性があることです。そのため、サーバーはエラーを説明するメッセージとともに400BadRequestを返します。Event.COMPLETEの場合、イベントの「データ」フィールドにサーバーからのメッセージ(応答)が返されますが、onGetUploadURLErrorまたはgetHttpStatusが呼び出された場合、エラーコードは400であると表示されますが、表示されません。私に関連するメッセージ。

「データ」フィールドはgetHttpStatusでは未定義であり、onGetUploadURLErrorでは「」です。逆に、getBaseURLでは、次のようになります。{"ResponseMetadata":{...}}チェックしたところ、間違ったリクエストに対してブラウザで同様の応答が返されましたが、表示されません。

どうすればメッセージを受け取ることができますか?

どうもありがとう、ルディ

4

1 に答える 1

5

Flash は HTTP ステータス コードをうまく処理できません。これは、問題は実際にはプラグインの制限であるというアドビの従業員からのコメントを含むブログ投稿です。アドビの従業員は、ソケットを介して AS3 を使用して HTTP リクエストを実行するためのライブラリを指摘していますが、それが非常に効率的であるとは思えません (プラグインでリクエストをブラウザに渡す場合と比較して)。

私がこれまで携わってきたすべてのプロジェクトでの標準的な方法は、常に200 OK を送信errorし、メッセージにキーを追加することでした。

編集:まさにあなたの問題であるこのバグも参照してください。

于 2010-06-10T00:00:08.740 に答える