首页 > 解决方案 > 在 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();
                        
                    }
                }               
            }
        }

标签: javagoogle-calendar-api

解决方案


推荐阅读