Установите время ожидания соединения для Gmail API на Android - PullRequest
0 голосов
/ 11 октября 2018

Я использую не очень хорошо документированный API Gmail для отправки электронной почты от имени пользователя на Android Studio.Все работает хорошо, кроме отправки тайм-аутов.Использование его в том виде, в котором оно есть, выдает IOException: NetworkError, когда отправка запроса завершается неудачно, но для его отбрасывания требуется слишком много времени (я думаю, 5 или более минут, он не рассчитывается).Я хочу настроить его.

Я нашел это , но это не сработало.

Вот мой код:

public Message send() {

   GoogleAccountCredential credential = GoogleAccountCredential.usingOAuth2(
        getApplicationContext(), GMAIL_SCOPES)
        .setBackOff(new ExponentialBackOff())
        .setSelectedAccountName(account);

   JsonFactory jsonFactory = new JacksonFactory();
   HttpTransport httpTransport = new NetHttpTransport();

   service = new Gmail.Builder(httpTransport, jsonFactory, 
                              setHttpTimeout(credential))
                     .setApplicationName("My app")
                     .build();

   try {
      Message message = createMessageWithEmail();
      return service.users()
                    .messages()
                    .send(credential.getSelectedAccountName(), message)
                    .execute();

   } catch (UserRecoverableAuthIOException e) {
       listener.onRequirePermission(e.getIntent());
       requiringPermission = true;
   } catch (MessagingException e) {
       e.printStackTrace();
   } catch (IOException e) {
       e.printStackTrace();
   }
      return null;
}

private HttpRequestInitializer setHttpTimeout(final HttpRequestInitializer 
                                             requestInitializer) {
   return httpRequest -> {
      requestInitializer.initialize(httpRequest);
      httpRequest.setConnectTimeout(SEND_TIMEOUT);
      httpRequest.setReadTimeout(READ_TIMEOUT);
   };
}

Другоеприветствуются и другие способы, кроме setConnectTimeout().

...