Можно ли делать легкие вызовы REST во Flex? - PullRequest
2 голосов
/ 19 декабря 2010

Мы конвертируем приложение Flex для использования некоторых API REST.

При добавлении класса mx.rpc.http.HTTPService в код двоичный вывод SWF вырос с 175 КБ до 260 КБ. Это недопустимый удар.

Есть ли лучший способ сделать легкие вызовы REST из приложения Flex? Разве нам лучше использовать внешний интерфейс JS, чтобы совершать звонки оттуда?

Ответы [ 2 ]

6 голосов
/ 19 декабря 2010

flash.net.URLLoader встроено в среду выполнения и не приводит к увеличению размера файла. Раньше я использовал его как клиент JSON, поэтому у вас не должно быть проблем с ним.

Ниже приведен очень простой пример. См. Документацию для HTTP_STATUS и HTTP_RESPONSE_STATUS для получения информации об их ограничениях.

var request: URLRequest = new URLRequest("http://tempuri.org/service/json");
request.method = "POST";
request.contentType = "application/json";
request.data = JSON.encode(jsonObject);

var loader : URLLoader = new URLLoader(request);

// Only supported by some browsers
loader.addEventHandler(HTTPStatusEvent.HTTP_STATUS, statusCodeReceived);

// AIR only
loader.addEventHandler(HTTPStatusEvent.HTTP_RESPONSE_STATUS, statusCodeReceived);

loader.addEventHandler(Event.COMPLETE, function(ev:Event):void
{
    var responseJson : String = request.data as String;

    var responseJsonObject : String = JSON.decode(responseJson);
});

loader.addEventHandler(SecurityErrorEvent.SECURITY_ERROR, errorHandler);
loader.addEventHandler(IOErrorEvent.IO_ERROR, errorHandler);
2 голосов
/ 19 декабря 2010

Я всегда думал, что хорошим подходом к этому было бы создание небольшого интерфейса для JavaScript HTTP API браузера, XmlHttpRequest.Я никогда не пробовал, но я смотрел на это, и казалось, что это может быть довольно просто.

Это даст дополнительное преимущество, заключающееся в обходе ограничений безопасности Flash Player, которые ужасно поддерживают HTTPкалека.

...