Я использую не очень хорошо документированный 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()
.