使用HTTPService或URLRequest时,如何避免Flex中的身份验证对话框?

时间:2008-12-31 22:48:17

标签: flex rest restful-authentication

这与this question有关。我正在编写一个使用REST的Flex应用程序(WindowedApplication)。当我使用有效身份验证发布时,一切都很好,但如果我碰巧将无效的用户名或密码传递给REST API(特定于Twitter REST API),则会弹出身份验证对话框。

这不是一个理想的用户体验,当我使用HTTPService和URLRequest时,它都会发生。似乎没有我可以捕获的事件来取消对话框。

以下是我的代码:

    var request:URLRequest = new URLRequest('http://twitter.com/statuses/update.json');
    request.method = URLRequestMethod.POST;
    var encoder : Base64Encoder = new Base64Encoder();
    encoder.encode(this.user + ':' + this.password);
    request.requestHeaders.push(new URLRequestHeader("Authorization", "Basic " + encoder.toString()));
    var params:Object = new Object();
    params.status = msg;                
    request.data = params;

    var loader:URLLoader = new URLLoader();
    loader.addEventListener(Event.COMPLETE, HandleRequestComplete);
    loader.load(request);

我错过了什么吗?有没有更好的方法来解决这个问题?

3 个答案:

答案 0 :(得分:2)

这是因为您的URL请求正在处理身份验证。为了避免这种情况,请执行下一步:

request.authenticate = false;

问候!

阿兰。

答案 1 :(得分:1)

来自Twitter API文档here

  

suppress_response_codes:如果这样   参数存在,所有响应   将以200 OK状态返回   代码 - 甚至是错误。这个参数   存在以适应Flash和   运行的JavaScript应用程序   截取所有非200的浏览器   响应。如果使用,那就是工作   客户端确定错误   通过解析响应体来说明状态。   谨慎使用,因为那些错误   消息可能会改变。

答案 2 :(得分:0)

我不知道这是否适用于普通的Flex应用程序,但在AIR应用程序中,您可以设置允许的响应代码列表以使其有效。