Как мне прочитать HTTPResponse Django во Flex? - PullRequest
2 голосов
/ 16 января 2009

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

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

Есть мысли?

Ответы [ 4 ]

2 голосов
/ 16 января 2009

что-то вроде

<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, чтобы увидеть, что именно возвращается, убедитесь, что возвращается то, что вы думаете.

2 голосов
/ 16 января 2009

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

1 голос
/ 04 декабря 2009

Я также новичок в flex и столкнулся с той же проблемой при загрузке в бэкэнд 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, но тогда у вас нет доступа к ответу.

0 голосов
/ 23 октября 2009

вы можете получить доступ к ответу так же, как и в вашем обработчике события 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...