2012-07-24 68 views
0

我试图从测试控制台应用程序中向Google日历添加事件。 我通过我在Google API控制台注册的Web应用程序获得了“https://www.googleapis.com/auth/calendar”作用域的token_refresh。 我在我的测试控制台应用程序中使用此存储的token_refresh来获取access_token。 然后,我想将事件添加到与我拥有的refresh_token对应的用户的日历中。撰写POST Http请求以添加Google Calendar API v3事件

所以我建立一个POST的HttpWebRequest如下:

HttpWebRequest request = WebRequest.Create("https://www.googleapis.com/calendar/v3/calendars/" + calendarID + "/events") as HttpWebRequest; // Where calendarID is like [email protected] 
request.Headers.Add("Authorization", "Bearer " + access_token); 
request.Headers.Add("Accept-Charset", "UTF-8"); 
request.Headers.Add("ContentType", "application/json"); 
request.ProtocolVersion = HttpVersion.Version11; 
request.KeepAlive = false; 
request.Method = "POST"; 

GoogleCalendarEvent anEvent = new GoogleCalendarEvent(); 
anEvent.start = new GoogleCalendarEventTime(DateTime.Today); 
anEvent.end = new GoogleCalendarEventTime(DateTime.Today);    

string data = jsonSerializer.Serialize(anEvent); // jsonSerializer is a JavaScriptSerializer object 
byte[] postData = Encoding.UTF8.GetBytes(data); 
Stream ws = request.GetRequestStream(); 
ws.Write(postData, 0, postData.Length); 
ws.Close(); 
WebResponse response = request.GetResponse(); // throws WebException The remote server returned an error: (400) Bad Request. 
stream = new StreamReader(response.GetResponseStream()); 
string result = stream.ReadToEnd().Trim(); 

和辅助类:

private class GoogleCalendar 
{ 
    private string kind; 
    private string etag; 
    private string id; 
    private string summary; 
    private string timezone; 
    private string accesrole; 

    public string Kind 
    { 
     get { return this.kind;} 
     set { this.kind = value; } 
    } 

    public string Etag 
    { 
     get { return this.etag; } 
     set { this.etag = value; }    
    } 

    public string ID 
    { 
     get { return this.id; } 
     set { this.id = value; } 
    } 

    public string Summary 
    { 
     get { return this.summary; } 
     set { this.summary = value; } 
    } 

    public string TimeZone 
    { 
     get { return this.timezone; } 
     set { this.timezone = value; } 
    } 

    public string AccessRole 
    { 
     get { return this.accesrole; } 
     set { this.accesrole = value; } 
    } 
} 

private class GoogleCalendarEventTime 
{ 
    private DateTime _date; 

    public string date 
    { 
     get 
     { 
      return this._date.ToString("yyyy-mm-dd"); 
     } 
    } 

    public GoogleCalendarEventTime(DateTime time) 
    { 
     this._date = time; 
    } 
} 

我的问题是,当我试着去理解我得到的请求的响应错误400错误的请求。这种类型的错误代码适用于POST构建不当和未知错误的占位符。

+0

请告诉我怎样才能生成access_token @alexnaicu – Saravanakumar 2018-01-08 17:02:44

回答

0

谷歌提供了一个client library for .NET,这会让你更容易。有关如何使用Calendar API配置客户端库的说明,请参见here(单击该页面上的.NET选项卡)。

此行构建,你将用来执行API调用服务对象:

var service = new CalendarService(); 

不幸的是,目前还没有全面的样品使用.NET与所有的日历API的API方法,但您可以看到此客户端库支持的所有API的list,其中许多API都有示例。 API的使用模式几乎相同。

+0

请告诉我如何生成access_token和一个更多有什么区别bw Google API和SDK。@ Dan Holevoet – Saravanakumar 2018-01-08 17:07:43

相关问题