我从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无效。想法?
答案 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。
答案 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
;