这与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);
我错过了什么吗?有没有更好的方法来解决这个问题?
答案 0 :(得分:2)
这是因为您的URL请求正在处理身份验证。为了避免这种情况,请执行下一步:
request.authenticate = false;
问候!
阿兰。
答案 1 :(得分:1)
来自Twitter API文档here:
suppress_response_codes:如果这样 参数存在,所有响应 将以200 OK状态返回 代码 - 甚至是错误。这个参数 存在以适应Flash和 运行的JavaScript应用程序 截取所有非200的浏览器 响应。如果使用,那就是工作 客户端确定错误 通过解析响应体来说明状态。 谨慎使用,因为那些错误 消息可能会改变。
答案 2 :(得分:0)
我不知道这是否适用于普通的Flex应用程序,但在AIR应用程序中,您可以设置允许的响应代码列表以使其有效。