2009-01-16 63 views
2

我是一個完整的Flex noob,所以我提前道歉,如果我失去了一些明顯的東西。如何讀取Flex中的Django HTTPResponse?

我在Flex中寫了一個相當簡單的文件上傳器,它通過URLRequest(FileReference對象處理上載)調用我的Django後端。我的上傳按預期工作,我有Django返回一個HTTPResponse對象。因此,我想閱讀HTTPResponse對象的內容。

有什麼想法?

回答

2

沿

<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點調試以查看exaclty返回什麼,確保它的內容應該返回。

+0

我想去這條路線,但FileReference.upload()期望URLRequest作爲第一個參數。我試過使用「作爲URLRequest」,但沒有運氣。有什麼建議? – Huuuze 2009-01-16 16:50:21

2

通過它獲取客戶端的時候,它只是一個普通的HTTP響應,以便把它像任何其他響應

0

您可以訪問您的onComplete事件處理程序,像這樣的迴應:

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

我們這樣做這讓JSON弗朗一個Java Web服務。

你只需要擺在首位使用的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); 
1

我也是新的彎曲和我在同一個問題做一個上傳到一個Java休息後端的時候跑了,我使用FileReference上的DateEvent來解決它。爲了獲得響應數據使用這樣的事情。:

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捕獲,但是您無法訪問響應。