我是一个完整的 Flex 菜鸟,所以如果我遗漏了一些明显的东西,我提前道歉。
我在 Flex 中编写了一个相当简单的文件上传器,它通过 URLRequest 调用我的 Django 后端(FileReference 对象处理上传)。我的上传按预期工作,我让 Django 返回一个 HTTPResponse 对象。因此,我想阅读 HTTPResponse 对象的内容。
有什么想法吗?
我是一个完整的 Flex 菜鸟,所以如果我遗漏了一些明显的东西,我提前道歉。
我在 Flex 中编写了一个相当简单的文件上传器,它通过 URLRequest 调用我的 Django 后端(FileReference 对象处理上传)。我的上传按预期工作,我让 Django 返回一个 HTTPResponse 对象。因此,我想阅读 HTTPResponse 对象的内容。
有什么想法吗?
当它到达客户端时,它只是一个普通的 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 处进行调试以查看返回的确切内容,确保它是您认为应该返回的内容。
我也是 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 捕获,但是您无权访问响应。
您可以在 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);