2013-02-13 10 views
1

사용자 이름과 비밀번호를 알고있는 경우 사용자의 야후 캘린더에 액세스하려고합니다. CalDav API를 사용하여 작업을 수행하는 코드 스 니펫을 발견했습니다. 코드는 2 개의 라이브러리 sardine.jar와 ical4j.jar를 사용합니다. 이 코드의 문서에 따르면 코드는 Google 캘린더와 Yahoo 캘린더에서 작동합니다. 그에 따라 CalDav 서버에 대한 URL을 변경해야합니다. 코드는 Google 캘린더에서 잘 작동하지만 야후 캘린더에서 해당 코드를 변경하면 작동하지 않습니다.CalDav API를 사용하여 Yahoo 캘린더 통합

스택 트레이스 : 나는 다음과 같은 오류 있어요] 근본 원인과를 net.fortuna.ical4j.data.ParserException :에서 오류 라인 1 : 예상 [-3], [-1]

내가 생각 읽기 그것은 구글과 야후의 ics 파일 형식의 불일치 때문이거나 야후 용 ics 파일이 만들어지지 않았습니다. 브라우저에서이 URL을 사용할 때 Google 캘린더의 ICF 파일을 찾았지만 야후에서는 찾지 못했습니다.

구글 캘린더 :

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.util.Iterator; 
import java.util.List; 

import net.fortuna.ical4j.data.CalendarBuilder; 
import net.fortuna.ical4j.data.ParserException; 
import net.fortuna.ical4j.filter.Filter; 
import net.fortuna.ical4j.filter.PeriodRule; 
import net.fortuna.ical4j.model.Calendar; 
import net.fortuna.ical4j.model.Component; 
import net.fortuna.ical4j.model.DateTime; 
import net.fortuna.ical4j.model.Period; 
import net.fortuna.ical4j.model.Property; 
import com.googlecode.sardine.Sardine; 
import com.googlecode.sardine.SardineFactory; 

public class sardineMain { 
    @SuppressWarnings("deprecation") 



public static void main(String[] args) throws Exception { 

    Sardine sardine = SardineFactory.begin("Email","password"); 

    String url= "https://www.google.com/calendar/dav/[email protected]/events/"; 

    java.util.Calendar start = java.util.Calendar.getInstance(); 
    java.util.Calendar end = java.util.Calendar.getInstance(); 
    end.add(java.util.Calendar.MONTH, 1); 

    //Fri May 25 08:56:36 KST 2012==Mon Jun 25 08:56:36 KST 2012 

    Period period = new Period(new DateTime(start.getTime()),new DateTime(end.getTime())); 
    Filter filter = new Filter(new PeriodRule(period)); 


    //Collection<CalanderQueryOutput> results = new ArrayList<CalanderQueryOutput>(); 


    InputStream EventStream = sardine.get(url); 
    BufferedReader br = new BufferedReader(new InputStreamReader(EventStream)); 
    CalendarBuilder builder = new CalendarBuilder(); 
    Calendar calendar = builder.build(br); 


     List eventsToday = (List) filter.filter(calendar.getComponents(Component.VEVENT)); 
     CalanderQueryOutput caldavOutput = new CalanderQueryOutput(); 

    for (Iterator i = eventsToday.iterator(); i.hasNext();) { 

    Component component = (Component) i.next(); 


    String CreatedS = component.getProperty(Property.CREATED).toString().trim(); 
String SummaryS = component.getProperty(Property.SUMMARY).toString().trim(); 
String StatusS = component.getProperty(Property.STATUS).toString().trim(); 
String StartDateS = component.getProperty(Property.DTSTART).toString().trim(); 
String EndDateS = component.getProperty(Property.DTEND).toString().trim(); 

/*System.out.println(CreatedS); 
System.out.println(SummaryS); 
System.out.println(StatusS); 
System.out.println(StartDateS); 
System.out.println(EndDateS);*/ 
System.out.println(component); 


    } 
     } 

이이 URL이 있습니다

이 내가 사용하는 코드는 https://www.google.com/calendar/dav/ <> @ gmail.com/이벤트/

야후! Calendar : https://caldav.calendar.yahoo.com/dav/ < @ yahoo.es/Calendar //

코드로 무엇이 문제인지 또는 어떻게 yahoo 캘린더의 ics 파일을 프로그래밍 방식으로 얻을 수 있는지 알려주십시오.

답변