1

サイトで更新を検索する Java プログラムがあります。チェックしてから、ユーザーが設定した期間スリープします。

いくつかのテスト中に、私はスリープ時間を 0 秒に設定しましたが、それを忘れて、サイトを過剰に要求しました (過剰なスパム?、用語がわからない)。このサイトに行って手動で何かをチェックしていなければ、これに気付かなかったでしょう。

エラーは 429 です: リクエストが多すぎます。Web を検索したところ、いつ再試行してもよいか (retry-after ヘッダー) がサイトから送信されるはずであることがわかりました。問題は、この情報を取得できないか、見つけられないことです。

クロム経由でソースを表示しましたが、情報が見つかりませんでした。次に getErrorStrem を使用しましたが、情報が見つかりませんでした。

スタックオーバーフローに関する別の質問では、

すべてが適切に設定されている場合は、429 応答とともに「Retry-after」ヘッダーも受け取ります。

Web テクノロジーに関する私の知識はかなり限られています。私が書いたプログラムは、ページのソースを見て気づいたパターンを探しました。私のJavaの知識は優れていますが、素晴らしいものではありません。

では、再試行情報を取得するにはどうすればよいですか? 約20時間が経過し、再試行すると同じエラーが発生しました。

4

1 に答える 1

2

RFC 6585で指定されているとおり:

429 ステータス コードは、ユーザーが一定時間内に送信したリクエストが多すぎることを示します (「レート制限」)。

応答表現には、状態を説明する詳細を含める必要があり (SHOULD) 、新しい要求を行う前に待機する時間を示すRetry-After ヘッダーを含めることができます (MAY )。

この特定のヘッダーはオプションです。したがって、ヘッダーに表示されない場合は、そこにないためです。

応答表現に条件を含めることは推奨にすぎません (必須ではありません)。

この制限に関する規則はありません。サーバーの構成によって異なります。

RFC で一般的に使用される動詞の正確な意味については、こちらを参照してください。

于 2014-07-08T20:17:44.690 に答える