2008-09-15 22 views
4

私はこのような私のFlexアプリケーションからサーブレットからいくつかのXMLを読み込む:あなたは_servletURLは、いくつかのケースではhttp://foo.bar/path/to/servletFlashのURLRequestがURLをエスケープしないようにするにはどうすればよいですか?

のようなものである想像できるように

_loader = new URLLoader(); 
_loader.load(new URLRequest(_servletURL+"?do=load&id="+_id)); 

、このURLは、アクセント付き文字(長い話)が含まれています。私はunescapedの文字列をURLRequestに渡しますが、フラッシュはそれをエスケープし、無効なエスケープされたURLを呼び出しているようです。アイデア?

答えて

4

これは何が違うのだろうかどうかはわからないんだけど、これは同じのURLRequest達成するためのクリーンな方法です:LiveDocsのから

var request:URLRequest = new URLRequest(_servletURL) 
request.method = URLRequestMethod.GET; 
var reqData:Object = new Object(); 

reqData.do = "load"; 
reqData.id = _id; 
request.data = reqData; 

_loader = new URLLoader(request); 
+0

おかげで、しかしきれいにしながら、それは何の違いに –

0

http://livedocs.adobe.com/flex/3/langref/flash/net/URLRequest.html

は、URLRequestオブジェクトを作成します。 System.useCodePageがtrueの場合、要求はUnicodeではなくシステムコードページを使用してエンコードされます。 System.useCodePageがfalseの場合、要求はシステムコードページではなく、Unicodeを使用してエンコードされます。

このページでは、より多くの情報があります。http://livedocs.adobe.com/flex/3/html/help.html?content=18_Client_System_Environment_3.html

を基本的にあなただけの(私はおそらくcreationCompleteイベントでそれを置く)URLRequestの前に実行される機能にこれを追加する必要が

System.useCodePage = false;

+0

感謝をしなかったが、その同じページから、それはでuseCodePageは、デフォルトではfalseであると言います。とにかく、私は実験します –

+1

useCodePageは機械で動作するかもしれないシステムコードページを使用するので、英語以外の言語では失敗します。 – grapefrukt

5

私の友人ルイスはそれを考え出した:

をあなたはencodeURIはUTF8URLエンコーディング http://livedocs.adobe.com/flex/3/langref/package.html#encodeURI()

ではなく、エスケープ解除をそれは http://livedocs.adobe.com/flex/3/langref/package.html#unescape()

を参照してくださいASCIIにエスケープしているため、私はどこことがあると思いません使用する必要があります予想される%C3%A9の代わりにURLに%E9が表示されています。

http://www.w3schools.com/TAGS/ref_urlencode.asp

関連する問題