0

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

4

1 回答 1

0

文档GoogleJsonResponseException将被抛出。GoogleJsonResponseException.getDetails() 返回一个GoogleJsonError。GoogleJsonError.code 方法将返回错误代码(在本例中为 HTTP 401 错误)。

于 2012-07-03T22:53:29.603 回答