【问题标题】:How do I read a Django HTTPResponse in Flex?如何在 Flex 中读取 Django HTTPResponse?
【发布时间】:2009-01-16 16:17:45
【问题描述】:

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

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

有什么想法吗?

【问题讨论】:

    标签: django apache-flex flex3


    【解决方案1】:

    类似的东西

    <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”,但没有运气。有什么建议吗?
    • 嗯,那是完全不同的事情。我很确定你无法得到回应。如果你使用像上面这样的 HTTP 服务,那么很好,如果你使用 FileReference,那么你能得到的只是诸如完成、进度、IO_error 等事件。
    • 您能否对来自 fileReference 的完整事件然后创建并发送 HTTP 请求以获取您发回的任何内容?您要返回什么数据,上传应该只是上传而不是上传和返回数据。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我也是 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 捕获服务器错误,但是您无权访问响应。

      【讨论】:

        【解决方案4】:

        您可以在 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);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-12-28
          • 2020-05-10
          • 2016-03-06
          • 2020-09-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多