2014-07-08 74 views
0

我有一個Java程序,搜索網站的更新。它檢查並睡眠一段時間,由用戶設定。HTTP錯誤429的Java處理?

在一些測試中,我將睡眠時間設置爲0秒,忘記了它,並且它過度請求(過度垃圾郵件?,不知道術語)該網站。如果我沒有去這個網站並手動檢查某些東西,我不會注意到這一點。

我得到的錯誤是429:太多請求。我搜索了網頁,發現該網站應該發送給我什麼時候可以重試(重試後的標題)。問題是我要麼沒有得到這些信息,要麼找不到它。

我通過chrome查看了源代碼,但沒有找到相關信息。然後我使用getErrorStrem並沒有找到信息。

在另一個question在計算器據說

如果一切設置正確,你還會收到一個 「重發後」的文件頭和429響應

沿我對網絡技術的瞭解相當有限。我寫的程序查找了我注意到查看頁面源的模式。我的Java知識更好,但不是很好。

那麼如何獲得重試信息後?大約20小時過去了,當我再次嘗試時,我得到了同樣的錯誤。

回答

1

rfc 6585指定:

429狀態代碼表示該用戶已經在給定的時間量(「速率限制」)發送太多 請求。

響應表示應該包括細節說明 條件,並且可能包括一個Retry-After頭指示多久 製造一個新的請求之前等待。

這個特定的頭只是可選的。所以如果你沒有在標題中看到它,那是因爲它不在那裏。

包含在響應中表示的條件是唯一一個recommandation(因此不是強制性的)

有關於此限制沒有規則:這取決於服務器配置。

對於RFC中常用動詞的確切含義:你可以閱讀this

+0

,謝謝,我很可能過度看了「可能」的一部分 –