[問題] 請教如何破除create google calendar 限制 (thread 失敗)
我寫了一隻暴力法程式測試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
01/28 09:31, 2F
推
01/28 11:38, , 3F
01/28 11:38, 3F
→
01/28 16:59, , 4F
01/28 16:59, 4F
→
01/28 17:00, , 5F
01/28 17:00, 5F