FlexアプリケーションをいくつかのREST APIを使用するように変換しています。Flexで軽量REST呼び出しを行うことは可能ですか?
mx.rpc.http.HTTPService
クラスをコードに追加すると、SWFバイナリ出力は175KBから260KBに増加しました。これは容認できないヒットです。
Flexアプリケーションから軽量REST呼び出しを実行する方法はありますか?そこからの呼び出しを行うために外部インターフェイスJSを使用するほうがよいですか?
FlexアプリケーションをいくつかのREST APIを使用するように変換しています。Flexで軽量REST呼び出しを行うことは可能ですか?
mx.rpc.http.HTTPService
クラスをコードに追加すると、SWFバイナリ出力は175KBから260KBに増加しました。これは容認できないヒットです。
Flexアプリケーションから軽量REST呼び出しを実行する方法はありますか?そこからの呼び出しを行うために外部インターフェイスJSを使用するほうがよいですか?
flash.net.URLLoader
はランタイムに組み込まれているため、ファイルサイズの増加はありません。以前はJSONクライアントとして使用していましたので、問題はありません。
以下は非常に簡単な例です。制限については、HTTP_STATUS
およびHTTP_RESPONSE_STATUS
のドキュメントを参照してください。
var request: URLRequest = new URLRequest("http://tempuri.org/service/json");
request.method = "POST";
request.contentType = "application/json";
request.data = JSON.encode(jsonObject);
var loader : URLLoader = new URLLoader(request);
// Only supported by some browsers
loader.addEventHandler(HTTPStatusEvent.HTTP_STATUS, statusCodeReceived);
// AIR only
loader.addEventHandler(HTTPStatusEvent.HTTP_RESPONSE_STATUS, statusCodeReceived);
loader.addEventHandler(Event.COMPLETE, function(ev:Event):void
{
var responseJson : String = request.data as String;
var responseJsonObject : String = JSON.decode(responseJson);
});
loader.addEventHandler(SecurityErrorEvent.SECURITY_ERROR, errorHandler);
loader.addEventHandler(IOErrorEvent.IO_ERROR, errorHandler);
素敵!簡単な使用法のコードサンプルは素晴らしいでしょう:) –
私が覚えているところでは、公式の文書には、コードを不必要に複雑にするので、 –
私はいつもこれまでの良好なアプローチは、ブラウザのJavaScriptのHTTP API、XmlHttpRequestの小規模インターフェイスを作成するだろうと思ってきました。私はそれを試したことはありませんが、私はそれを調べました、そして、それはかなり簡単なように見えました。
これは、Flash Playerのセキュリティ制限を回避し、HTTPサポートをひどく損なうという利点が追加されます。
IMO、これは悪いアプローチです。さらに、AJAX/XmlHttpRequestは、Flash PlayerのネットAPIと同じかそれ以上の制限があります(JSからのアクセスを許可する必要があります)。 –
私は、XHRにはFlash Playerより多くの制限があるという意見に同意します。 FPはPUTまたはDELETEを使用できません。要求ヘッダー "Authorization"を使用できず、ステータスコードが200以外の場合(201も)応答本体にアクセスできません。 –
これは新しいHTTP/2機能の使用を有効にする良い方法だと思います。 – GxFlint
デバッグビルドまたはリリースビルドのバイナリ出力についてお話ししていますか?私の経験では、リリースビルドははるかに最適化されています。デバッグ出力を比較している場合は、リリースビルドをエクスポートして、問題を解決する前に実際に問題があることを確認します。 – JeffryHouser
また、SWFサイズを最適化する場合は、ランタイム共有ライブラリの使用方法をご確認ください。 –
@flextras - サイズはリリースビルドを反映して更新されます。 @PeZ - RSLはこの場合私たちを助けません。これは単一のSWFシナリオです。 –