[英]How do I prevent Flash's URLRequest from escaping the url?
我從我的 Flex 應用程序的 servlet 中加載了一些 XML,如下所示:
_loader = new URLLoader();
_loader.load(new URLRequest(_servletURL+"?do=load&id="+_id));
你可以想象_servletURL
類似於http://foo.bar/path/to/servlet
在某些情況下,這個 URL 包含重音字符(長篇大論)。 我將未unescaped
的字符串傳遞給URLRequest
,但似乎 flash 對其進行了轉義並調用了轉義的 URL,這是無效的。 想法?
我的朋友路易斯想通了:
您應該使用 encodeURI 進行 UTF8URL 編碼http://livedocs.adobe.com/flex/3/langref/package.html#encodeURI()
但不是 unescape,因為它轉義為 ASCII 參見http://livedocs.adobe.com/flex/3/langref/package.html#unescape()
我認為這就是我們在 URL 中得到 %E9 而不是預期的 %C3%A9 的地方。
我不確定這是否會有所不同,但這是實現相同 URLRequest 的一種更簡潔的方法:
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);
來自 livedocs: http://livedocs.adobe.com/flex/3/langref/flash/net/URLRequest.html
創建一個 URLRequest object。 如果 System.useCodePage 為 true,則使用系統代碼頁而不是 Unicode 對請求進行編碼。 如果 System.useCodePage 為 false,則使用 Unicode 而非系統代碼頁對請求進行編碼。
但基本上你只需要將它添加到將在 URLRequest 之前運行的 function (我可能會將它放在 creationComplete 事件中)
System.useCodePage = false
;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.