2014-11-24 485 views
0

我改变了从ASP.NET中的webform更改我的Gmail联系人的属性? 我可以改变大部分属性,但我不能改变生日。这里是我的代码:如何更改Google GMail联系人的生日?

Dim contact As Contact = cr.Retrieve(Of Contact)(contactURL) 
    contact.Name.FullName = m.Prenom & " " & m.Nom 
    contact.Name.FamilyName = m.Nom 
    contact.Name.GivenName = m.Prenom 
    contact.PrimaryEmail.Address = m.AdresseMail 

    Dim adr As StructuredPostalAddress = contact.PostalAddresses(0) 
    adr.Primary = True 
    adr.Street = m.Adresse 
    adr.Postcode = m.CodePostal 
    adr.City = m.Ville 
    adr.Rel = ContactsRelationships.IsHome 

    Dim d As New Date 
    d = CDate(m.DateNaissance) 
    contact.ContactEntry.Birthday = d.Year & "-" & d.Month & "-" & d.Day 

    Try 
    Dim updatedContact As Contact = cr.Update(contact) 

    Catch e As GDataVersionConflictException 
     ' Do Something 
    Finally 
     'do Something 
    End Try 

我得到了一个错误:

[WebException: Le serveur distant a retourné une erreur : (400) Demande incorrecte.] 
    System.Net.HttpWebRequest.GetResponse() +6542104 
    Google.GData.Client.GDataRequest.Execute() +136 

    [GDataRequestException: Execution of request failed: https://www.google.com/m8/feeds/contacts/xxxxxxx/full/xxxxxxx] 
     Google.GData.Client.GDataRequest.Execute() +291 
     Google.GData.Client.GDataGAuthRequest.Execute(Int32 retryCounter) +653 
     Google.GData.Client.GDataGAuthRequest.Execute() +34 
     Google.GData.Client.Service.EntrySend(Uri feedUri, AtomBase baseEntry, GDataRequestType type, AsyncSendData data) +430 
    Google.GData.Client.FeedRequest`1.Update(Y entry) +417 
     FlbMembres.CtlMajGmail.MajGmail() in C:\Mes Sites Web\FLBMembres\FlbWeb\ControlesUser\CtlMajGmail.ascx.vb:187 
     FlbMembres.CtlMajGmail.btnMaj_Click(Object sender, EventArgs e) in C:\Mes Sites Web\FLBMembres\FlbWeb\ControlesUser\CtlMajGmail.ascx.vb:200 
     System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9628114 
     System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +103 
                System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10 
     System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13 
     System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35 
     System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1724 
+0

我不会说很多法语,但是错误消息基本上表明您的某个地方有错误的请求。重新检查你用于出生日期的格式。 Pheraps你的一天或一个月缺乏领先的零?格式必须是yyyy-MM-dd,所以像“1983-12-1”这样的日期将是无效的(但是“1983-12-01”是正确的)。 – Renan 2014-11-24 19:41:12

+0

你是对的...因为我的生日是1970-2-1而不是1970-02-01。谢谢 – Eric 2014-11-24 19:49:33

回答

0

的问题是,你写你的约会对象是这样的:

Dim d As New Date 
d = CDate(m.DateNaissance) 
contact.ContactEntry.Birthday = d.Year & "-" & d.Month & "-" & d.Day 

DayMonth性质日期类型是数字。这意味着如果任何一个小于10,你会得到一个数字的月份或一个数字的一​​天。例如,2014年1月1日将变为2014-1-1

但谷歌预计日期格式化为yyyy-MM-dd

只需检查日期和月份的长度,并确保它们在需要时具有前导零。

由于您使用的是.NET,因此DateTime结构有一个采用格式字符串的ToString方法。你可以将其替换代码:

Dim d As New Date 
d = CDate(m.DateNaissance) 
contact.ContactEntry.Birthday = d.ToString("yyyy-MM-dd") 

...你会得到你所需要的,用更少的级联格式的字符串。 Bonne的机会!

相关问题