如何防止Flash的URLRequest转义网址?

时间:2008-09-15 12:43:39

标签: flex flash urlrequest

我从Flex应用程序的servlet加载一些XML,如下所示:

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

您可以想象_servletURL类似于http://foo.bar/path/to/servlet

在某些情况下,此网址包含重音字符(长篇故事)。我将unescaped字符串传递给URLRequest,但似乎flash将其转义并调用转义的URL,该URL无效。想法?

3 个答案:

答案 0 :(得分:5)

我的朋友路易斯明白了:

您应该使用encodeURI执行UTF8URL编码 http://livedocs.adobe.com/flex/3/langref/package.html#encodeURI()

但不是unescape,因为它看不到ASCII http://livedocs.adobe.com/flex/3/langref/package.html#unescape()

我认为这是我们在网址中获得%E9而不是预期的%C3%A9。

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

答案 1 :(得分:4)

我不确定这是否会有所不同,但这是实现相同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); 

答案 2 :(得分:0)

来自livingocs: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

但基本上你只需要将它添加到一个将在URLRequest之前运行的函数(我可能会把它放在creationComplete事件中)

System.useCodePage = false;