[問題] 請教如何破除create google calendar 限制 (thread 失敗)

看板java作者 (挺)時間16年前 (2010/01/28 00:13), 編輯推噓2(203)
留言5則, 4人參與, 最新討論串1/1
我寫了一隻暴力法程式測試google建立日曆次數,最多只能寫入201筆。 我嘗試用Thread,當寫入200筆暫停一下(sleep),在繼續執行還是error 請教如何破除create google calendar 限制呢? import com.google.gdata.client.calendar.CalendarService; import com.google.gdata.data.DateTime; import com.google.gdata.data.PlainTextConstruct; import com.google.gdata.data.calendar.CalendarEventEntry; import com.google.gdata.data.extensions.When; import com.google.gdata.util.AuthenticationException; import com.google.gdata.util.ServiceException; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class allCreate { private static String ID = "Google 帳號"; private static String PW = "Google 密碼"; private static String StartYear = "2010"; private static String StartMonths = "01"; private static String StartDay = "20"; private static String EndYear = "2011"; private static String EndMonths = "01"; private static String EndDay = "24"; private static int numDay = 0; public static void main(String args[]) throws ParseException, MalformedURLException, AuthenticationException, IOException, ServiceException { SimpleDateFormat formatter = new SimpleDateFormat("yyyy" + "-" + "MM" + "-" + "dd"); Date StrartDate = formatter.parse(StartYear + "-" + StartMonths + "-" + StartDay);//開始日期時間 Date EndDate = formatter.parse(EndYear + "-" + EndMonths + "-" + EndDay);//結束日期 Calendar calendar = Calendar.getInstance(); calendar.setTime(StrartDate); long total = (EndDate.getTime() - StrartDate.getTime()) / (1000 * 60 * 60 * 24) + 1; while (calendar.getTime().compareTo(EndDate) <= 0) {//每天create google calendar int y = calendar.get(Calendar.YEAR); int m = calendar.get(Calendar.MONTH); int mm = m + 1; int d = calendar.get(Calendar.DATE); String yyy; String mmm; String ddd; if (y < 10) { yyy = String.valueOf(y); yyy = "000" + yyy; } else if (y < 100) { yyy = String.valueOf(y); yyy = "00" + yyy; } else if (y < 1000) { yyy = String.valueOf(y); yyy = "0" + yyy; } else { yyy = String.valueOf(y); } if (mm < 10) { mmm = String.valueOf(mm); mmm = "0" + mmm; } else { mmm = String.valueOf(mm); } if (d < 10) { ddd = String.valueOf(d); ddd = "0" + ddd; } else { ddd = String.valueOf(d); } numDay = numDay + 1; System.out.println("第" + numDay + "天 " + yyy + "-" + mmm + "-" + ddd ); //以上要符合 google setStartTime 日期格式限制 //=================================================================================================================== String url = "http://www.google.com/calendar/feeds/" + ID + "/private/full"; URL postUrl = new URL(url); CalendarEventEntry myEntry = new CalendarEventEntry(); myEntry.setTitle(new PlainTextConstruct("第 " + numDay + " 筆 Title 李"));//建立title (create google calendar even) DateTime startTime = DateTime.parseDateTime(yyy + "-" + mmm + "-" + ddd + "T" + "13" + ":" + "00" + ":00"); DateTime endTime = DateTime.parseDateTime(yyy + "-" + mmm + "-" + ddd + "T" + "17" + ":" + "00" + ":00"); When eventTimes = new When(); eventTimes.setStartTime(startTime); eventTimes.setEndTime(endTime); CalendarService myService = new CalendarService("exampleCo-exampleApp-1"); myService.setUserCredentials(ID, PW); CalendarEventEntry insertedEntry = myService.insert(postUrl, myEntry); System.out.println("OK"); calendar.add(Calendar.DAY_OF_YEAR, 1);//while//日期加一天 //============================================================================= }//while System.out.println("總共 " + total + " 天數"); }//public static void main(String args[]) } [color=red]錯誤訊息[/color] [color=blue]第201天 6000-08-17[/color] 2010/1/27 下午 11:18:06 CreateThread.Create creatCalendar 嚴重的: null com.google.gdata.client.GoogleService$CaptchaRequiredException: Captcha required at com.google.gdata.client.GoogleAuthTokenFactory.getAuthException(GoogleAuthTokenFactory.java:619) at com.google.gdata.client.GoogleAuthTokenFactory.getAuthToken(GoogleAuthTokenFactory.java:500) OK [color=blue]第202天 6000-08-18 星期五[/color] at com.google.gdata.client.GoogleAuthTokenFactory.setUserCredentials(GoogleAuthTokenFactory.java:346) at com.google.gdata.client.GoogleService.setUserCredentials(GoogleService.java:362) at com.google.gdata.client.GoogleService.setUserCredentials(GoogleService.java:317) at com.google.gdata.client.GoogleService.setUserCredentials(GoogleService.java:301) at CreateThread.Create.creatCalendar(Create.java:46) at CreateThread.CalendarDays.run(CalendarDays.java:117) at java.lang.Thread.run(Thread.java:619) 2010/1/27 下午 11:18:06 CreateThread.Create creatCalendar 嚴重的: null com.google.gdata.client.GoogleService$CaptchaRequiredException: Captcha required at com.google.gdata.client.GoogleAuthTokenFactory.getAuthException(GoogleAuthTokenFactory.java:619) at com.google.gdata.client.GoogleAuthTokenFactory.getAuthToken(GoogleAuthTokenFactory.java:500) at com.google.gdata.client.GoogleAuthTokenFactory.setUserCredentials(GoogleAuthTokenFactory.java:346) at com.google.gdata.client.GoogleService.setUserCredentials(GoogleService.java:362) at com.google.gdata.client.GoogleService.setUserCredentials(GoogleService.java:317) at com.google.gdata.client.GoogleService.setUserCredentials(GoogleService.java:301) at CreateThread.Create.creatCalendar(Create.java:46) at CreateThread.CalendarDays.run(CalendarDays.java:117) at java.lang.Thread.run(Thread.java:619) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.137.186.77

01/28 07:53, , 1F
ㄜ... 這問題的感覺好微妙啊... 看起來是無解
01/28 07:53, 1F

01/28 09:31, , 2F
這是Google那邊本身的限制吧?
01/28 09:31, 2F

01/28 11:38, , 3F
http://0rz.tw/j5iot 問問吧
01/28 11:38, 3F

01/28 16:59, , 4F
CaptchaRequiredException: Captcha required
01/28 16:59, 4F

01/28 17:00, , 5F
單純是被反機器人機制打爆吧...
01/28 17:00, 5F
文章代碼(AID): #1BO6P3J6 (java)