Как прочитать Django HTTPResponse в Flex?

Я полный Flex noob, поэтому заранее прошу прощения, если мне не хватает чего-то очевидного.

Я написал довольно простой загрузчик файлов в Flex, который вызывает мою внутреннюю часть Django через URLRequest (объект FileReference обрабатывает загрузку). Моя загрузка работает как задумано, и у меня Django возвращает объект HTTPResponse. Таким образом, я хотел бы прочитать содержимое объекта HTTPResponse.

Есть предположения?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
1 350
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

К тому времени, когда он доходит до клиента, это обычный HTTP-ответ, поэтому относитесь к нему как к любому другому ответу.

Ответ принят как подходящий

что-то вроде

<mx:HTTPService id = "myHTTPRequest" 
    url = "{whatever your url request is}"
    result = "resultHandler(event)" 
    fault = "faultHandler(event)"
    showBusyCursor = "true" 
    resultFormat = "object"> 

затем внутри resultHandler что-то вроде этого

private function resultHandler (event : ResultEvent) : void {
    var obj : Object = event.result;
    //do something with returned object

}

Выполните отладку в точке resultHandler, чтобы увидеть, что именно возвращается, убедитесь, что это то, что, по вашему мнению, должно быть возвращено.

Я бы хотел пойти по этому пути, но FileReference.upload () ожидает URLRequest в качестве первого параметра. Я пробовал использовать "as URLRequest", но безуспешно. Любой совет?

Huuuze 16.01.2009 19:50

хм, тогда это совсем другое дело. Я почти уверен, что вы не сможете получить ответ. Если вы используете службу HTTP, как указано выше, тогда все в порядке, если вы используете FileReference, тогда все, что вы можете получить, это такие события, как завершение, прогресс, IO_error и т. д.

kenneth 16.01.2009 20:19

Не могли бы вы затем создать и отправить HTTP-запрос для полного события из fileReference, чтобы получить то, что вы отправляете обратно? какие данные вы хотите вернуть, загрузка должна быть просто загрузкой, а не загрузкой и возвратом данных.

kenneth 16.01.2009 20:21

вы можете получить доступ к ответу в своем обработчике события onComplete:

private function saveCompleteHandler(event:Event):void {
    var loader:URLLoader = event.currentTarget as URLLoader;
    trace("saveCompleteHandler - event returned:" + loader.data as String);
}

мы делаем это, чтобы получить json из веб-службы java.

вам просто нужно использовать URLLoader для загрузки URLRequest в первую очередь:

var loader:URLLoader = new URLLoader();
loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, statusHandler, 10000);
loader.addEventListener(IOErrorEvent.IO_ERROR, saveErrorHandler, 10000);
loader.addEventListener(Event.COMPLETE, saveCompleteHandler, 10000);

var request:URLRequest = new URLRequest("http:/whereverer");
request.method = URLRequestMethod.GET;
loader.load(request);

Я также новичок в гибкости, и я столкнулся с той же проблемой при загрузке в бэкэнд Java Rest, я решил ее с помощью DateEvent в FileReference. Чтобы получить данные ответа, используйте что-то вроде этого:

var fileRef:FileReference = new FileReference();
fileRef.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, responseHandler);
var request:URLRequest = new URLRequest("yourUrl");
fileRef.upload(request, "fileData"); 

private function responseHandler(event:DataEvent):void {
    var response:XML = new XML(event.data); 
//Note the DataEvent: this is the event that holds the response. 
//I sent back data as xml
}

Ваш ответ всегда должен быть успешным кодом статуса HTTP (200), если ваш бэкэнд отправляет коды статуса 500, он не вызовет DateEvent. Ошибки сервера по-прежнему можно отловить с помощью HTTPStatusEvent, но тогда у вас нет доступа к ответу.

Другие вопросы по теме