2

次のようなエラーレポート(ユーザーから)を常に受け​​取っています。

原因:ステータスコード:400、AWSサービス:AmazonSimpleDB、AWSリクエストID:c5cb109d-bbff-fcea-bc0d-0cb60ff8f6af、AWSエラーコード:RequestExpired、AWSエラーメッセージ:リクエストの有効期限が切れています。タイムスタンプの日付は2012-06-06T13:19:59.415Zです。現在の日付は2012-06-06T14:20:03Zです

どうやらこれは、ユーザーが間違ったタイムゾーンまたは何かを設定しているためですか?とにかく、この特定のエラーをキャッチして、タイムゾーン設定を確認するように求めるメッセージをユーザーに投稿したいと思いますが、それを行う方法が見つかりません。AmazonServiceExceptionをキャッチすると、エラーはnullとして表示されます。

ステータスコードまたはエラーコードに基づいてエラーをキャッチするにはどうすればよいですか?私が試した現在のコードは次のようになります。

try {
        dostuff()
    } catch (IOException e) {
        updateAWS("DownloadErrors");
        return "filenotfound";
    } catch (AmazonServiceException e) {
        return "downloadfail";
    }

ただし、AmazonServiceException eは常にnullであるため、そこから情報を取得することはできません。

他のコード:

private void doStuff() throws IOException, AmazonServiceException{ 
//code here
}
4

1 に答える 1

0

どうやらこれは私が必要としたものです。SDbは「RequestExpired」を追跡し、S3は「RequestTimeTooSkewed」を使用します

また、これは、システム時間がAWSサーバーと15分以上異なるために発生しているようです。私はユーザーにメモを入れて時間を確認し、可能であれば「自動」の日付/時刻を使用します。自分でテストし、エラーと解決策を再現しました。

try {
        result = doOperations();
    } catch (AmazonServiceException e) {
        if (e.getErrorCode().equals("RequestExpired") || e.getErrorCode().equals("RequestTimeTooSkewed")) {
            result = "timestamp";
        }
        }
    return result;
}
于 2012-12-01T03:45:33.863 に答える