2008-12-31 78 views
1

这与this question有关。我在写一个使用REST的Flex应用程序(一个WindowedApplication)。当我使用有效的身份验证进行发布时,一切都很好,但如果我碰巧将无效的用户名或密码传递给REST API(具体为Twitter REST API),则会弹出一个身份验证对话框。如何在使用HTTPService或URLRequest时避免Flex中的验证对话框?

这不是一个理想的用户体验,并且它在我使用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); 

我这么想吗?有没有更好的方法来解决这个问题?

回答

1

从Twitter的API文档here

suppress_response_codes: - 甚至错误如果这 参数存在,所有响应 将有200个OK状态 代码返回。此参数 存在以适应Flash和 在 浏览器中运行的JavaScript应用程序,该浏览器拦截所有非200 响应。如果使用,则客户端的作业 通过解析响应主体来确定错误 状态。 请谨慎使用,因为这些错误消息可能会更改 。

+0

哦,太棒了!谢谢! – Jim 2009-01-01 01:16:49

0

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

2

这是因为你的URLRequest处理验证。为了避免这样做:

request.authenticate = false; 

问候!

Alain。

相关问题