Re: [問題] 請教如何破除create google calendar 괠…
處理過圖形驗證
可是現在又遇到
我用"ServiceForbiddenException"尋找後
找到了
http://code.google.com/p/gdata-java-client/issues/detail?id=92
http://groups.google.ad/group/google-calendar-help-dataapi/browse_thread/thread/21d14a9d96918b6
兩篇文章 搞不懂 不知如何解問題
package ServiceForbiddenException;
import com.google.gdata.client.authn.oauth.OAuthException;
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.ServiceException;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import com.google.gdata.client.GoogleService.CaptchaRequiredException;
import com.google.gdata.client.calendar.CalendarService;
import com.google.gdata.util.AuthenticationException;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ServiceForbiddenException {
private static String ID = "google 帳號";
private static String PW = "google 密碼";
private static String StartYear = "2010";
private static String StartMonths = "01";
private static String StartDay = "01";
private static String EndYear = "2100";
private static String EndMonths = "01";
private static String EndDay = "01";
private static int numDay = 0;
private static String yyy;
private static String mmm;
private static String ddd;
//http://groups.google.ad/group/google-calendar-help-dataapi/browse_thread/thread/21d14a9d96918b6
//http://code.google.com/p/gdata-java-client/issues/detail?id=92
public static void main(String args[]) throws ParseException,
MalformedURLException, AuthenticationException, IOException,
ServiceException, OAuthException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy" + "-" + "MM"
+ "-" + "dd");
Date StrartDate = formatter.parse(StartYear + "-" + StartMonths + "-"
+ StartDay);//開始日期時間
Date EndDate = formatter.parse(EndYear + "-" + EndMonths + "-" +
EndDay);//結束日期
CalendarService myService = new
CalendarService("exampleCo-exampleApp-1");
// myService.setOAuthCredentials(null, null);
Calendar calendar = Calendar.getInstance();
calendar.setTime(StrartDate);
long total = (EndDate.getTime() - StrartDate.getTime()) / (1000 * 60
* 60 * 24) + 1;
String url = "http://www.google.com/calendar/feeds/" + ID +
"/private/full";
URL postUrl = new URL(url);
myService.setUserCredentials(ID, PW);
// try {
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);
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 日期格式限制
//===================================================================================================================
CalendarEventEntry myEntry = new CalendarEventEntry();
myEntry.setTitle(new PlainTextConstruct("第 " + numDay + " 筆
Title 李"));//建立title (create google calendar even)
DateTime startTime = DateTime.parseDateTime(yyy + "-" + mmm + "-"
+ ddd + "T11:00:00");
DateTime endTime = DateTime.parseDateTime(yyy + "-" + mmm + "-" +
ddd + "T17:00:00");
When eventTimes = new When();
eventTimes.setStartTime(startTime);
eventTimes.setEndTime(endTime);
myEntry.addTime(eventTimes);
// CalendarEventEntry insertedEntry = myService.insert(postUrl,
myEntry);
// myService.delete(new
URL(insertedEntry.getEditLink().getHref()));
CalendarEventEntry fetchedEntry =
myService.insert(postUrl,myEntry);
fetchedEntry.delete();
System.out.println("OK");
calendar.add(Calendar.DAY_OF_YEAR, 1);//while//日期加一天
//=============================================================================
}//while
System.out.println("總共 " + total + " 天數");
} catch (CaptchaRequiredException e) {
int num = 0;
System.out.println("Please visit " + e.getCaptchaUrl());
System.out.print("Answer to the challenge? ");
BufferedReader in = new BufferedReader(new
InputStreamReader(System.in));
String answer = in.readLine();
myService.setUserCredentials(ID, PW, e.getCaptchaToken(), answer);
//==============================================================================
while (calendar.getTime().compareTo(EndDate) <= 0) {
num = num + 1;
System.out.println("第 " + num + " 筆");
int y = calendar.get(Calendar.YEAR);
int m = calendar.get(Calendar.MONTH);
int mm = m + 1;
int d = calendar.get(Calendar.DATE);
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);
}
System.out.println(yyy + "-" + mmm + "-" + ddd);
CalendarEventEntry myEntry = new CalendarEventEntry();
myEntry.setTitle(new PlainTextConstruct("第 " + numDay + " 筆 Title 吉
"));//建立title (create google calendar even)
DateTime startTime = DateTime.parseDateTime(yyy + "-" + mmm + "-" +
ddd + "T12:00:00");
DateTime endTime = DateTime.parseDateTime(yyy + "-" + mmm + "-" + ddd
+ "T17:00:00");
When eventTimes = new When();
eventTimes.setStartTime(startTime);
eventTimes.setEndTime(endTime);
myEntry.addTime(eventTimes);
// myService.setUserCredentials(ID, PW);
CalendarEventEntry insertedEntry = myService.insert(postUrl, myEntry);
calendar.add(Calendar.DAY_OF_YEAR, 1);//while//日期加一天
}
//==============================================================================
System.out.println("02");
} catch (AuthenticationException e) {
System.out.println(e.getMessage());
System.out.println("03");
}
}//public static void main(String args[])
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.137.174.219
推
01/31 10:00, , 1F
01/31 10:00, 1F
→
01/31 13:05, , 2F
01/31 13:05, 2F
→
01/31 13:07, , 3F
01/31 13:07, 3F
→
01/31 17:42, , 4F
01/31 17:42, 4F
討論串 (同標題文章)