2

我是一个完整的 Flex 菜鸟,所以如果我遗漏了一些明显的东西,我提前道歉。

我在 Flex 中编写了一个相当简单的文件上传器,它通过 URLRequest 调用我的 Django 后端(FileReference 对象处理上传)。我的上传按预期工作,我让 Django 返回一个 HTTPResponse 对象。因此,我想阅读 HTTPResponse 对象的内容。

有什么想法吗?

4

4 回答 4

2

当它到达客户端时,它只是一个普通的 HTTP 响应,所以像对待任何其他响应一样对待它

于 2009-01-16T16:20:07.917 回答
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 处进行调试以查看返回的确切内容,确保它是您认为应该返回的内容。

于 2009-01-16T16:38:47.847 回答
1

我也是 flex 新手,在上传到 Java Rest 后端时遇到了同样的问题,我使用 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 捕获,但是您无权访问响应。

于 2009-12-04T09:30:21.990 回答
0

您可以在 onComplete 事件处理程序中访问响应:

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

我们这样做是为了从 java web 服务中获取 json。

您只需要首先使用 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);
于 2009-10-23T08:23:40.083 回答