我想知道是否有人知道使用分析 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 密钥进行调用以授予新的访问令牌。