【问题标题】:GoogleApps client giving SocketTimeOutException onlyGoogleApps 客户端仅提供 SocketTimeOutException
【发布时间】:2015-03-06 18:19:07
【问题描述】:

我们编写了一个客户端来使用 GoogleNetHttpTransport 在 googleapps 上创建一个用户,但是当我们通过 superadmin api 将用户设置为超级管理员时,我们得到了一个 socketTimeoutException。连接用户本身具有超级管理员权限。

我们在使用 GoogleNetHttpTransport 时如何增加 ReadTimeOut/SocketTimeout。请在下面找到连接目标和制作客户端的代码片段

httpTransport = GoogleNetHttpTransport.newTrustedTransport() ;
GoogleCredential credential = new GoogleCredential.Builder()
                    .setTransport(httpTransport)
                    .setJsonFactory(JSON_FACTORY)
                    .setServiceAccountId(serviceAccountId)
                    .setServiceAccountScopes(scopes)
                    .setServiceAccountUser(superAdminUserMail)
                    .setServiceAccountPrivateKeyFromP12File(privateKeyFile).build();

client = new Directory.Builder(httpTransport, JSON_FACTORY,credential)
                      .setApplicationName(APPLICATION_NAME).
                      .setHttpRequestInitializer(credential).build();

//Getting the sockt/timeout exception 
client.users().makeAdmin(userID, admin).execute();

【问题讨论】:

    标签: google-api google-apps google-api-java-client google-admin-sdk google-directory-api


    【解决方案1】:

    创建自己的 HttpRequestInitializer:

    new HttpRequestInitializer() {
       @Override
        public void initialize(HttpRequest request) throws IOException {
          credential.initialize(request);
          request.setConnectTimeout(CONNECT_TIMEOUT);
          request.setReadTimeout(READ_TIMEOUT);
        }
     }
    

    【讨论】:

    • 感谢 qtxo,这解决了我的问题。非常感谢。我还有一个问题,是否需要使用任何推荐的传输来管理 googleapps 中的用户和组?我在文档中看到他们有 apacheHttpTransport 和 NetHttpTransport?
    • 我从未尝试过 ApacheHttpTransport,因为 HttpClient 版本依赖项 (4.0.1) 对于我在应用程序中使用的其他库来说太旧了。
    猜你喜欢
    • 2014-03-03
    • 2021-05-16
    • 1970-01-01
    • 2020-11-20
    • 1970-01-01
    • 2015-07-17
    • 2016-01-25
    • 1970-01-01
    • 2021-08-07
    相关资源
    最近更新 更多