2008-12-31 44 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。