如何在失败时访问 HTTP 响应正文?

Dwi*_*lly 5 apache-flex actionscript-3 httpservice flex4

当 Web 服务调用失败并且调用我的“故障”事件侦听器时,如何访问 HTTP 响应正文?我可以看到原始消息,但找不到访问响应的方法。

这是我调用网络服务的方式

var connect: HTTPService = new HTTPService;
connect.url = "https://app.XYZ.org/services/code?format=xml";
connect.method = "POST";
connect.contentType = "application/x-www-form-urlencoded";
connect.showBusyCursor = true;
connect.resultFormat = "xml";
connect.addEventListener("result", retrieveResults);
connect.addEventListener("fault", retrieveResults);
var params:Object = new Object;
params.username = user;
params.password = password;
params.code = "123";
connect.request = params;
connect.send();
Run Code Online (Sandbox Code Playgroud)

和我的事件处理函数

private function retrieveResults(event:Event): void
{
  var success:Boolean = event.type == ResultEvent.RESULT;
..
}
Run Code Online (Sandbox Code Playgroud)

信息

And*_*pov 4

我几乎肯定这不会发生。但根据错误,您可以尝试将这两个侦听器添加到加载器:

loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
loader.addEventListener(IOErrorEvent.IO_ERROR, httpIOErrorHandler);
Run Code Online (Sandbox Code Playgroud)

其中之一给出了状态,以便您可以找到错误。如果状态正确,则后者应该为您带来结果(loader.data)。在某些情况下,AIR 可以给您响应,但 Flash 不能。你应该两者都尝试一下。

无论如何,我认为最好处理内部错误并返回 ok(状态 200),其中包含错误消息。Flash 对于 http 状态来说非常糟糕:)