簡體   English   中英

如何防止來自 escaping 和 url 的 Flash 的 URLRequest?

[英]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 的地方。

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

我不確定這是否會有所不同,但這是實現相同 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 而非系統代碼頁對請求進行編碼。

此頁面有更多信息: http://livedocs.adobe.com/flex/3/html/help.html?content=18_Client_System_Environment_3.ZFC35FDC70D5FC69D2569883A82EZ2

但基本上你只需要將它添加到將在 URLRequest 之前運行的 function (我可能會將它放在 creationComplete 事件中)

System.useCodePage = false ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM