2016-03-23 6 views
0

Googleにicsファイルをインポートできません。 カレンダーのapiを検索しました。彼らは明らかにそれを実装していません。 その後私はGoogle caldav(99%のドキュメントがない)を試しました。caldavを使用してGoogleカレンダーにインポートする

私はこのサンプル関数を書いており、エラー400 BAD REQUESTで失敗します。

private void TestGoogleCaldav() 
    { 
     string contents = string.Empty; 
     string downloadURL = string.Format("https://apidata.googleusercontent.com/caldav/v2/<email>/events/dav.ics"); 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(downloadURL)); 
     request.Method = "PUT"; 
     request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; 
     request.ContentType = "application/x-www-form-urlencoded"; 
     request.KeepAlive = true; 
     request.Timeout = 15 * 60 * 1000; 

     string headervalue = string.Empty; 
     string[] scope = new string[] { CalendarService.Scope.Calendar }; 
     string token = GetOauthAccessToken(scope); 
     headervalue = string.Format("Authorization: Bearer {0}", token); 
     request.Headers.Add(headervalue); 

     string iCalFileName = @"C:\temp\invite.ics"; 
     System.IO.StreamReader myFile = new System.IO.StreamReader(iCalFileName); 
     string myString = myFile.ReadToEnd(); 
     var bytes = Encoding.ASCII.GetBytes(myString); 

     using (var requestStream = request.GetRequestStream()) 
     { 
      requestStream.Write(bytes, 0, bytes.Length); 
     } 
     var response = (HttpWebResponse)request.GetResponse(); 

     if (response.StatusCode == HttpStatusCode.OK) 
     { 
     } 
     else 
     { 

     } 
    } 

ICSは有効であり、破損していません。 (外部ユーザーに送信するときにGoogleによって生成されます)。

ICSファイル:

BEGIN:VCALENDAR 
PRODID:-//Google Inc//Google Calendar 70.9054//EN 
VERSION:2.0 
CALSCALE:GREGORIAN 
METHOD:REQUEST 
BEGIN:VEVENT 
DTSTART:20160427T150000Z 
DTEND:20160427T160000Z 
DTSTAMP:20160208T145831Z 
ORGANIZER;CN=Test user:mailto:[email protected] 
UID:[email protected] 
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=the user;X-NUM-GUESTS=0:mailto:[email protected] 
CREATED:20160208T145831Z 
DESCRIPTION:View your event 
LAST-MODIFIED:20160208T145831Z 
LOCATION: 
SEQUENCE:0 
STATUS:CONFIRMED 
SUMMARY:ics 
TRANSP:OPAQUE 
END:VEVENT 
END:VCALENDAR 
+1

"ICSは有効で、壊れていません(外部ユーザーに送信するときにGoogleによって生成されます)。"これは、通常のCalDAVペイロードではなく、iTIP要求(メソッド:要求)です。また、ASCII?本当に? – hnh

+0

通常のcalDAVペイロードをインポートしようとしました。あなたはテストへのリンクを持っていますか? (注:このファイルは交換とアマゾンの仕事のメールに大丈夫です)。 – CloudAnywhere

+0

チャールズまたは同様のツールを使用してiCalからキャプチャするだけです。 – hnh

答えて

0

あなたのContent-Typeヘッダはtext/calendarする必要があります。それが唯一の問題なのかどうかは分かりませんが、最も明白な問題です。

関連する問題