4

对于我们的应用程序,我们使用具有 2 条腿授权的 Google Drive SDK。我们使用 Drive SDK 很长时间了,但今天我们遇到了 Files.list API 的新问题(https://developers.google.com/drive/v2/reference/files/list)。对于某些来自不同域的用户,我们收到以下错误:

{“错误”:{“代码”:500,“消息”:空}}

Drive SDK 一切正常吗?这个错误是什么意思?

4

1 回答 1

1

我建议阅读这篇文章,它帮助我使用 Android 配置和连接到 Google Drive

编辑:

我有相同的 500 错误服务器,为了避免这个错误谷歌Exponential backoff根据他们推荐:

指数退避是网络应用程序的标准错误处理策略,其中客户端在越来越长的时间内定期重试失败的请求。如果大量请求或繁重的网络流量导致服务器返回错误,指数退避可能是处理这些错误的好策略。相反,它不是处理与速率限制、网络容量或响应时间无关的错误的相关策略,例如无效的授权凭证或文件未找到错误。

使用得当,指数退避可以提高带宽使用效率,减少获得成功响应所需的请求数量,并最大限度地提高并发环境中的请求吞吐量。

例子:

安卓代码:

FileList files = null;

for (int n = 0; n < 5; ++n) {

   try {
      setStatus("trying n = " + n);
      files = service.files()
        .list()
        .setMaxResults(1)
        .setQ("mimeType = 'application/vnd.google-apps.folder' and title = 'folder_title'")
        .execute();
   }
   catch (GoogleJsonResponseException e)
   {
      if (e.getDetails().getCode() == 500) {
        try {
            Thread.sleep((1 << n) * 1000 + randomGenerator.nextInt(1001));
            setStatus("sleep() n = " + n);
        } catch (InterruptedException e1) {
            // TODO Auto-generated catch block
            setStatus("InterruptedException n = " + n + " " + e1.getMessage());
            e1.printStackTrace();
        }
      }
   }

}

我已经测试了这段代码,并在最后一次尝试中成功连接

Google 建议使用指数退避与 4xx 和 5xx 服务器错误

4xx 服务器错误主要是身份验证问题

于 2013-04-01T02:08:58.420 回答