アナリティクスAPIを使用して401応答を検出するクリーンなプログラム方法を誰かが知っているかどうか疑問に思います。基盤となるHTTPトランスポートにおそらくそれがあることは知っていますが、Analyticsオブジェクトを介して呼び出しが行われる場合、失敗の唯一のインジケーターはIOExceptionです(これは任意のタイプのエラーを示す可能性があります)。スタックトレースに表示されるJSON応答を取得する方法があれば、そこで確認できますが、現時点で考えられるのは、e.getMessage()文字列を解析することだけです。例:
GaData gadata = null;
try {
gaData = analytics.data().ga().get(
"ga:" + profileId,
"2012-06-01",
"2012-06-30",
"ga:visits")
.execute();
} catch (IOException ioe) {
if (ioe.contains("401")) {
System.out.println("A 401 occurred.");
}
}
このケースを分離する理由は、アクセストークンの有効期限が切れていることを示しているためです。したがって、アクセストークンの有効期限が切れているかどうかを確認するには、別の解決策が適しています。これが可能な場合、コードはAPIキーを使用して呼び出しを行い、新しいアクセストークンを付与できます。