Как предотвратить URL-запрос Flash от URL-адреса? - PullRequest
4 голосов
/ 15 сентября 2008

Я загружаю некоторый XML из сервлета из моего приложения Flex следующим образом:

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

Как вы можете себе представить, _servletURL это что-то вроде http://foo.bar/path/to/servlet

В некоторых случаях этот URL содержит акцентированные символы (длинная история). Я передаю строку unescaped в URLRequest, но кажется, что flash избегает ее и вызывает экранированный URL, что недопустимо. Идеи?

Ответы [ 3 ]

5 голосов
/ 18 сентября 2008

Мой друг Луис понял это:

Вы должны использовать 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 в URL вместо ожидаемого% C3% A9.

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

4 голосов
/ 15 сентября 2008

Я не уверен, будет ли это иначе, но это более чистый способ достижения того же 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); 
0 голосов
/ 15 сентября 2008

Из живого: 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;

...