我想知道是否有人知道使用分析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密钥进行调用以授予新的访问令牌。
答案 0 :(得分:0)
documentation表示GoogleJsonResponseException会被抛出。 GoogleJsonResponseException.getDetails()返回GoogleJsonError。 GoogleJsonError.code方法将返回错误代码(在本例中为HTTP 401 ERROR)。