flex - ¿Cómo evito que URLRequest de Flash escape de la url?
(3)
Desde livedocs: http://livedocs.adobe.com/flex/3/langref/flash/net/URLRequest.html
Crea un objeto URLRequest. Si System.useCodePage es verdadero, la solicitud se codifica utilizando la página de códigos del sistema, en lugar de Unicode. Si System.useCodePage es falso, la solicitud se codifica utilizando Unicode, en lugar de la página de códigos del sistema.
Esta página tiene más información: http://livedocs.adobe.com/flex/3/html/help.html?content=18_Client_System_Environment_3.html
pero básicamente solo necesitas agregar esto a una función que se ejecutará antes de la URLRequest (probablemente la pondría en un evento de creationComplete)
System.useCodePage = false
;
Cargué algo de XML de un servlet desde mi aplicación Flex de esta manera:
_loader = new URLLoader();
_loader.load(new URLRequest(_servletURL+"?do=load&id="+_id));
Como se puede imaginar _servletURL
es algo como http://foo.bar/path/to/servlet
En algunos casos, esta URL contiene caracteres acentuados (larga historia). Paso la cadena no URLRequest
a URLRequest
, pero parece que el flash se escapa y llama a la URL escapada, que no es válida. Ideas?
No estoy seguro de si esto será diferente, pero esta es una manera más limpia de lograr la misma 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);
Mi amigo Luis lo descubrió:
Deberías usar codificar URL. UTF8URL codifica http://livedocs.adobe.com/flex/3/langref/package.html#encodeURI ()
pero no unescape porque se deshace en ASCII, vea http://livedocs.adobe.com/flex/3/langref/package.html#unescape ()
Creo que es donde estamos obteniendo un% E9 en la URL en lugar del% C3% A9 esperado.