java - 在 Google 日历上编写事件时出现 java.net.SocketTimeoutException 异常
问题描述
我有一个Java程序,在最多记录一两次风后在Google日历上编写事件的几天内,转到“java.net.SocketTimeoutException:读取超时”
程序本身可以毫无问题地读取事件。
用 Java 1.8 编写
使用的 API 日历版本:v3-rev411-1.25.0
一切都是顺序的,并且在一个线程中。每个操作之前都有一个等待。
非常感谢您
Dipendente dip = getDipendente(assenza.getMatr());
String[] datgius = assenza.getDatgiu().split("/");
int anno = Integer.parseInt(datgius[0]);
int mese = Integer.parseInt(datgius[1]);
int giorno = Integer.parseInt(datgius[2]);
String[] dalles = assenza.getDalle().split(":");
int dalleOra = Integer.parseInt(dalles[0]);
int dalleMinuti = Integer.parseInt(dalles[1]);
String[] alles = assenza.getAlle().split(":");
int alleOra = Integer.parseInt(alles[0]);
int alleMinuti = Integer.parseInt(alles[1]);
Event evento = new Event();
GregorianCalendar calendario = new
GregorianCalendar(TimeZone.getTimeZone("Europe/Rome"));
calendario.set(anno, mese - 1, giorno, dalleOra, dalleMinuti);
Date startDate = calendario.getTime();
calendario.set(anno, mese - 1, giorno, alleOra, alleMinuti);
Date endDate = calendario.getTime();
evento.setStart(new EventDateTime().setDateTime(new DateTime(startDate)));
evento.setEnd(new EventDateTime().setDateTime(new DateTime(endDate)));
String tipoAssenza = assenza.getDescr();
String summary = String.format("%s %s [%s] %s", dip.getNome().substring(0,1)+".", dip.getCognme(), dip.getMatr(), tipoAssenza);
String location = String.format("%s / %s", dip.getSede(), dip.getReparto());
String descripion = assenza.getEmail();
Thread.sleep(1000);
try {
evento = service.events().insert(idCalendario, evento).setSendUpdates("none").execute();
} catch(java.net.SocketTimeoutException e1) {
logger.warn("Errore java.net.SocketTimeoutException rilevato, riprovo (1 volta) ");
Thread.sleep(1000);
try {
evento = service.events().insert(idCalendario, evento).setSendUpdates("none").execute();
} catch(java.net.SocketTimeoutException e2) {
logger.warn("Errore java.net.SocketTimeoutException rilevato, riprovo (2 volta) ");
Thread.sleep(5000);
try {
evento = service.events().insert(idCalendario, evento).setSendUpdates("none").execute();
} catch(java.net.SocketTimeoutException e3) {
try {
logger.warn("Errore java.net.SocketTimeoutException rilevato, riprovo (3 volta)");
Thread.sleep(10000);
evento = service.events().insert(idCalendario, evento).setSendUpdates("none").execute();
} catch(java.net.SocketTimeoutException e4) {
logger.warn("Errore java.net.SocketTimeoutException rilevato, riprovo (4 volta!)");
Thread.sleep(20000);
evento = service.events().insert(idCalendario, evento).setSendUpdates("none").execute();
}
}
}
}
解决方案
推荐阅读
- python - Pandas 将多列融合以将数据集制成表格
- html - 如何在 Angular 中嵌入与资产不同的目录中的图像?
- pepper - 从 Pepper QiSDK 获取诊断
- javascript - Type 'number' is not assignable to type '0 | 1'
- flutter - Flutter + Azure:使用 AD B2C 进行身份验证
- c# - 如何在 Visual Studio 扩展中实现默认的大纲工具提示?
- android - 广播 android.intent.action.MEDIA_SCANNER_SCAN_FILE 在 Android 11 中不起作用
- angular - RxJs 主题在订阅时获得多个值
- python - 张量流。Batch Tensor 修改一个条目(张量)
- nginx - 【nginx】如何比较nginx中的ip和文件中的ip